if (copyOfRequest)
{
- // Do shallow copy
memcpy(copyOfRequest, entityHandlerRequest, sizeof(OCEntityHandlerRequest));
+ copyOfRequest->payload = NULL;
+ copyOfRequest->query = NULL;
+ copyOfRequest->numRcvdVendorSpecificHeaderOptions = 0;
+ copyOfRequest->rcvdVendorSpecificHeaderOptions = NULL;
- if (copyOfRequest->query)
+ if (entityHandlerRequest->query)
{
copyOfRequest->query = OICStrdup(entityHandlerRequest->query);
- if(!copyOfRequest->query)
+ if (!copyOfRequest->query)
{
NS_LOG(ERROR, "Copy failed due to allocation failure");
OICFree(copyOfRequest);
copyOfRequest->payload = (OCPayload *)
(OCRepPayloadClone ((OCRepPayload*) entityHandlerRequest->payload));
}
-
- // Ignore vendor specific header options for example
- copyOfRequest->numRcvdVendorSpecificHeaderOptions = 0;
- copyOfRequest->rcvdVendorSpecificHeaderOptions = NULL;
}
if (copyOfRequest)
NSFreeMalloc(&(obj->sourceName));
NSFreeMalloc(&(obj->topic));
NSFreeMediaContents(obj->mediaContents);
-
+ OCRepPayloadDestroy(obj->extraInfo);
OICFree(obj);
return NS_OK;
{
NSMessage * newMsg = NULL;
- if(copyMsg == NULL)
+ if (copyMsg == NULL)
{
NS_LOG(ERROR, "Copy Msg is NULL");
return NULL;
}
newMsg = NSInitializeMessage();
+ NS_VERIFY_NOT_NULL(newMsg, NULL);
newMsg->messageId = copyMsg->messageId;
OICStrcpy(newMsg->providerId, UUID_STRING_SIZE, copyMsg->providerId);
- if(copyMsg->dateTime)
+ if (copyMsg->dateTime)
{
newMsg->dateTime = OICStrdup(copyMsg->dateTime);
}
newMsg->topic = OICStrdup(copyMsg->topic);
}
+ if (copyMsg->extraInfo)
+ {
+ newMsg->extraInfo = OCRepPayloadClone(copyMsg->extraInfo);
+ }
+
return newMsg;
}
{
NSSyncInfo * newMsg = NULL;
- if(!copyMsg)
+ if (!copyMsg)
{
NS_LOG(ERROR, "Copy Msg is NULL");
return NULL;
newMsg = (NSSyncInfo *)OICMalloc(sizeof(NSSyncInfo));
- if(!newMsg)
+ if (!newMsg)
{
NS_LOG(ERROR, "newMsg is NULL");
return NULL;
{
NSConsumer * newMsg = NULL;
- if(copyMsg == NULL)
+ if (copyMsg == NULL)
{
NS_LOG(ERROR, "Copy Msg is NULL");
return NULL;
newMsg = (NSConsumer *)OICMalloc(sizeof(NSConsumer));
- if(!newMsg)
+ if (!newMsg)
{
NS_LOG(ERROR, "newMsg is NULL");
return NULL;
void NSDuplicateSetPropertyString(OCRepPayload** msgPayload, const char * name,
const char * copyString)
{
- if(copyString)
+ if (copyString)
{
OCRepPayloadSetPropString(*msgPayload, name, copyString);
}
void NSDuplicateSetPropertyInt(OCRepPayload** msgPayload, const char * name,
int64_t value)
{
- if(value)
+ if (value)
{
OCRepPayloadSetPropInt(*msgPayload, name, value);
}
char * providerId = NULL;
int64_t state = 0;
- if(!payload)
+ if (!payload)
{
return NULL;
}
+
NSSyncInfo * retSync = (NSSyncInfo *)OICMalloc(sizeof(NSSyncInfo));
+
if (!retSync)
{
return NULL;
retSync->messageId = 0;
retSync->state = NS_SYNC_READ;
-
OCRepPayload * repPayload = (OCRepPayload *)payload;
- if (!OCRepPayloadGetPropInt(repPayload, NS_ATTRIBUTE_MESSAGE_ID, (int64_t *)&retSync->messageId))
+
+ if (!OCRepPayloadGetPropInt(repPayload, NS_ATTRIBUTE_MESSAGE_ID,
+ (int64_t *)&retSync->messageId))
{
OICFree(retSync);
return NULL;
OICStrcpy(retSync->providerId, UUID_STRING_SIZE, providerId);
OICFree(providerId);
- NS_LOG_V(DEBUG, "Provider ID : %s", retSync->providerId);
+ NS_LOG_V(INFO_PRIVATE, "Provider ID : %s", retSync->providerId);
NS_LOG_V(DEBUG, "Sync ID : %lld", (long long int)retSync->messageId);
NS_LOG_V(DEBUG, "Sync State : %d", (int) retSync->state);
NS_LOG_V(INFO, "NS Query Params = %s", query);
- if(!query || query[0] == '\0' || !strlen(query))
+ if (!query || query[0] == '\0' || !strlen(query))
{
NS_LOG(ERROR, "query is null or \\0 or size is 0");
return NULL;
NSResult NSFreeMalloc(char ** obj)
{
- if(*obj)
+ if (*obj)
{
OICFree(*obj);
*obj = NULL;
NSMediaContents * NSDuplicateMediaContents(NSMediaContents * copyObj)
{
- if(!copyObj)
+ if (!copyObj)
{
return NULL;
}
NSMediaContents * newObj = (NSMediaContents *)OICMalloc(sizeof(NSMediaContents));
- if(!newObj)
+ if (!newObj)
{
NS_LOG(ERROR, "contents newObj is NULL");
return NULL;
}
- if(copyObj->iconImage)
+ if (copyObj->iconImage)
{
newObj->iconImage = OICStrdup(copyObj->iconImage);
}
NSResult NSFreeMediaContents(NSMediaContents * obj)
{
- if(!obj)
+ if (!obj)
{
return NS_FAIL;
}
{
NSMessage * msg = (NSMessage *)OICMalloc(sizeof(NSMessage));
- if(!msg)
+ if (!msg)
{
NS_LOG(ERROR, "Msg is NULL");
return NULL;
}
msg->messageId = OICGetCurrentTime(TIME_IN_MS);
+ msg->messageId = msg->messageId & 0x000000007FFFFFFF;
(msg->providerId)[0] = '\0';
msg->type = 0;
msg->dateTime = NULL;
msg->sourceName = NULL;
msg->mediaContents = NULL;
msg->topic = NULL;
+ msg->extraInfo = NULL;
return msg;
}
}
OCRepPayloadValue* val = payload->values;
- while(val)
+
+ while (val)
{
if (0 == strcmp(val->name, name))
{
{
NSTopicList * topicList = (NSTopicList *)OICMalloc(sizeof(NSTopicList));
- if(!topicList)
+ if (!topicList)
{
NS_LOG(ERROR, "topicList is NULL");
return NULL;
return topicList;
}
-NSResult NSFreeTopicList(NSTopicList * topicList)
+OCDevAddr * NSChangeAddress(const char * inputaddress)
{
- if (!topicList)
+ NS_VERIFY_NOT_NULL(inputaddress, NULL);
+
+ char * address = (char *)inputaddress;
+ char * schema = strstr(inputaddress, "//");
+ if (schema)
{
- return NS_ERROR;
+ address = schema + 2;
+ }
+ size_t prefixLen = schema - inputaddress;
+ if (prefixLen <= 0)
+ {
+ NS_LOG(ERROR, "Invalid Input address.");
+ return NULL;
+ }
+
+ OCTransportFlags flags = OC_DEFAULT_FLAGS;
+ OCTransportAdapter adapter = OC_ADAPTER_IP;
+ if (strstr(inputaddress, "coap+tcp://"))
+ {
+ NS_LOG(DEBUG, "address : TCP");
+ adapter = OC_ADAPTER_TCP;
+ }
+ else if (strstr(inputaddress, "coaps://"))
+ {
+ NS_LOG(DEBUG, "address : UDP + SECURED");
+ flags |= OC_FLAG_SECURE;
+ }
+ else if (strstr(inputaddress, "coaps+tcp://"))
+ {
+ NS_LOG(DEBUG, "address : TCP + SECURED");
+ flags |= OC_FLAG_SECURE;
+ adapter = OC_ADAPTER_TCP;
+ }
+ else if (strstr(inputaddress, "coap://"))
+ {
+ NS_LOG(DEBUG, "address : UDP");
+ }
+ else
+ {
+ NS_LOG(ERROR, "Invalid CoAP Schema.");
+ return NULL;
}
- //TODO:Free Topic List
+ OCDevAddr * retAddr = NULL;
+ retAddr = (OCDevAddr *) OICMalloc(sizeof(OCDevAddr));
+ NS_VERIFY_NOT_NULL(retAddr, NULL);
+ char * start = address;
+ char * end = address;
+ if (address[0] == '[')
+ {
+ flags |= OC_IP_USE_V6;
+ end = strchr(++address, ']');
+ if (!end || end <= start)
+ {
+ NS_LOG(ERROR, "Invalid Input Address - IPv6.");
+ NSOICFree(retAddr);
+ return NULL;
+ }
+ memset(retAddr->addr, 0, (size_t)MAX_ADDR_STR_SIZE);
+ OICStrcpy(retAddr->addr, (size_t)(end-start), address);
+ }
+ else
+ {
+ flags |= OC_IP_USE_V4;
+ end = strchr(address, ':');
+ if (!end || end <= start)
+ {
+ NS_LOG(ERROR, "Invalid Input Address - IPv4.");
+ NSOICFree(retAddr);
+ return NULL;
+ }
+ char * end2 = strchr(end + 1, ':');
+ if (end2)
+ {
+ NS_LOG(ERROR, "Invalid Input Address - IPv4.");
+ NSOICFree(retAddr);
+ return NULL;
+ }
+ memset(retAddr->addr, 0, (size_t)MAX_ADDR_STR_SIZE);
+ OICStrcpy(retAddr->addr, (size_t)(end-start)+1, address);
+ }
- return NS_OK;
+ retAddr->adapter = adapter;
+ retAddr->flags = flags;
+
+ address = end + 1;
+ int tmp = 0;
+ if (flags & OC_IP_USE_V6)
+ {
+ address++;
+ }
+ uint16_t port = address[tmp++] - '0';
+
+ while(true)
+ {
+ if (address[tmp] == '\0' || address[tmp] > '9' || address[tmp] < '0')
+ {
+ break;
+ }
+ if (tmp >= 5 || (port >= 6553 && (address[tmp] -'0') >= 6))
+ {
+ NS_LOG_V(ERROR, "Invalid Input Address - Port. %d", tmp+1);
+ NSOICFree(retAddr);
+ return NULL;
+ }
+ port *= 10;
+ port += address[tmp++] - '0';
+ }
+
+ retAddr->port = port;
+
+ NS_LOG(DEBUG, "Change Address for TCP request");
+ NS_LOG_V(INFO_PRIVATE, "Origin : %s", inputaddress);
+ NS_LOG_V(INFO_PRIVATE, "Changed Addr : %s", retAddr->addr);
+ NS_LOG_V(INFO_PRIVATE, "Changed Port : %d", retAddr->port);
+
+ return retAddr;
+}
+
+bool NSOCResultToSuccess(OCStackResult ret)
+{
+ switch (ret)
+ {
+ case OC_STACK_OK:
+ case OC_STACK_RESOURCE_CREATED:
+ case OC_STACK_RESOURCE_DELETED:
+ case OC_STACK_PRESENCE_STOPPED:
+ case OC_STACK_CONTINUE:
+ case OC_STACK_RESOURCE_CHANGED:
+ return true;
+ default:
+ NS_LOG_V(DEBUG, "OCStackResult : %d", (int)ret);
+ return false;
+ }
}