printf("app - mTitle : %s \n", title);\r
printf("app - mContentText : %s \n", body);\r
\r
- NSMessage * msg = (NSMessage *)OICMalloc(sizeof(NSMessage));\r
+ NSMessage * msg = NSCreateMessage();\r
\r
msg->title = OICStrdup(title);\r
msg->contentText = OICStrdup(body);\r
*/\r
NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type);\r
\r
+\r
+/**\r
+ * Initialize NSMessage struct, our service set message id and provider(device) id\r
+ * @return ::NSMessage *\r
+ */\r
+NSMessage * NSCreateMessage();\r
+\r
#ifdef __cplusplus\r
}\r
#endif // __cplusplus\r
int syncObId;\r
int messageObId;\r
bool isWhite;\r
-}NSCacheSubData;\r
+} NSCacheSubData;\r
\r
typedef struct\r
{\r
char * id; // ip ? ? ?\r
int messageType; // noti = 1, read = 2, dismiss = 3\r
NSMessage * nsMessage;\r
-}NSCacheMsgData;\r
+} NSCacheMsgData;\r
\r
typedef struct\r
{\r
char * contentText;\r
char * sourceName;\r
NSMediaContents * mediaContents;\r
-\r
} NSMessageResource;\r
\r
typedef struct\r
}
NS_LOG(DEBUG, "NSCopyOCEntityHandlerRequest - OUT");
-
return copyOfRequest;
}
return NS_ERROR;
}
- if (obj->messageId)
- {
- obj->messageId = 0;
- }
-
- if (obj->title)
- {
- OICFree(obj->title);
- obj->title = NULL;
- }
-
- if (obj->contentText)
- {
- OICFree(obj->contentText);
- obj->contentText = NULL;
- }
+ obj->messageId = 0;
+ (obj->providerId)[0] = '\0';
- if (obj->sourceName)
- {
- OICFree(obj->sourceName);
- obj->sourceName = NULL;
- }
+ NSFreeMalloc(&(obj->dateTime));
+ obj->ttl = 0;
+ NSFreeMalloc(&(obj->title));
+ NSFreeMalloc(&(obj->contentText));
+ NSFreeMalloc(&(obj->sourceName));
+ NSFreeMediaContents(obj->mediaContents);
OICFree(obj);
return NULL;
}
- newMsg = (NSMessage *)OICMalloc(sizeof(NSMessage));
- newMsg->contentText = NULL;
- newMsg->messageId = 0;
- newMsg->sourceName = NULL;
- newMsg->title = NULL;
+ newMsg = NSInitializeMessage();
+
+ newMsg->messageId = copyMsg->messageId;
+ OICStrcpy(newMsg->providerId, UUID_STRING_SIZE, copyMsg->providerId);
- if (copyMsg->messageId)
+ if(copyMsg->dateTime)
{
- newMsg->messageId = copyMsg->messageId;
+ newMsg->dateTime = OICStrdup(copyMsg->dateTime);
}
+ newMsg->ttl = copyMsg->ttl;
+
if (copyMsg->title)
{
newMsg->title = OICStrdup(copyMsg->title);
newMsg->sourceName = OICStrdup(copyMsg->sourceName);
}
+ if (copyMsg->mediaContents)
+ {
+ newMsg->mediaContents = NSDuplicateMediaContents(copyMsg->mediaContents);
+ }
+
return newMsg;
}
}
}
+void NSDuplicateSetPropertyInt(OCRepPayload** msgPayload, const char * name,
+ int64_t value)
+{
+ if(value)
+ {
+ OCRepPayloadSetPropInt(*msgPayload, name, value);
+ }
+}
NSSyncInfo * NSGetSyncInfo(OCPayload * payload)
{
char *restOfQuery = NULL;
int numKeyValuePairsParsed = 0;
+ if(!query || query[0] != '\0' || !strlen(query))
+ {
+ NS_LOG(ERROR, "query is null or \\0 or size is 0");
+ return NULL;
+ }
+
NS_LOG_V(INFO, "NS Query Params = %s", query);
char *keyValuePair = strtok_r (query, NS_QUERY_SEPARATOR, &restOfQuery);
if (strcmp(key, compareKey) == 0)
{
+ NS_LOG_V(DEBUG, "found Key : [%s] - Value : [%s] = ", key, value);
return value;
}
return NULL;
}
+
+NSResult NSFreeMalloc(char ** obj)
+{
+ if(*obj)
+ {
+ OICFree(*obj);
+ *obj = NULL;
+ return NS_OK;
+ }
+
+ return NS_FAIL;
+}
+
+NSMediaContents * NSDuplicateMediaContents(NSMediaContents * copyObj)
+{
+ if(!copyObj)
+ {
+ return NULL;
+ }
+
+ NSMediaContents * newObj = (NSMediaContents *)OICMalloc(sizeof(NSMediaContents));
+
+ if(copyObj->iconImage)
+ {
+ newObj->iconImage = OICStrdup(copyObj->iconImage);
+ }
+
+ return newObj;
+}
+
+NSResult NSFreeMediaContents(NSMediaContents * obj)
+{
+ if(!obj)
+ {
+ return NS_OK;
+ }
+
+ NSFreeMalloc(&(obj->iconImage));
+ OICFree(obj);
+
+ return NS_OK;
+}
+
+NSMessage * NSInitializeMessage()
+{
+ NSMessage * msg = (NSMessage *)OICMalloc(sizeof(NSMessage));
+ msg->messageId = OICGetCurrentTime(TIME_IN_MS);
+ (msg->providerId)[0] = '\0';
+ msg->type = 0;
+ msg->dateTime = NULL;
+ msg->ttl = 0;
+ msg->title = NULL;
+ msg->contentText = NULL;
+ msg->sourceName = NULL;
+ msg->mediaContents = NULL;
+
+ return msg;
+}
#include "oic_malloc.h"\r
#include "oic_string.h"\r
#include "ocrandom.h"\r
+#include "oic_time.h"\r
+#include "NSProviderSystem.h"\r
\r
OCEntityHandlerRequest *NSCopyOCEntityHandlerRequest(OCEntityHandlerRequest *);\r
NSResult NSFreeOCEntityHandlerRequest(OCEntityHandlerRequest *);\r
\r
+NSMessage * NSInitializeMessage();\r
NSResult NSFreeMessage(NSMessage *);\r
NSMessage * NSDuplicateMessage(NSMessage *);\r
\r
NSConsumer * NSDuplicateConsumer(NSConsumer *);\r
\r
void NSDuplicateSetPropertyString(OCRepPayload **, const char *, const char *);\r
+void NSDuplicateSetPropertyInt(OCRepPayload ** msgPayload, const char * name, int64_t value);\r
NSResult NSGenerateUUIDStr(char uuidStr[UUID_STRING_SIZE]);\r
\r
char * NSGetValueFromQuery(char *query, char * compareKey);\r
+NSResult NSFreeMalloc(char ** obj);\r
\r
+NSResult NSFreeMediaContents(NSMediaContents * obj);\r
+NSMediaContents * NSDuplicateMediaContents(NSMediaContents * copyObj);\r
\r
#endif /* _NS_UTIL__H_ */\r
}\r
\r
pthread_mutex_unlock(&NSMutex[DISCOVERY_SCHEDULER]);\r
-\r
}\r
\r
NS_LOG(DEBUG, "Destroy NSDiscoverySchedule");\r
pthread_mutex_unlock(&nsInitMutex);\r
\r
NS_LOG(DEBUG, "NSStartProvider - OUT");\r
-\r
return NS_OK;\r
}\r
\r
NSResult NSStopProvider()\r
{\r
NS_LOG(DEBUG, "NSStopProvider - IN");\r
-\r
pthread_mutex_lock(&nsInitMutex);\r
\r
if(initProvider)\r
}\r
\r
NSMessage * newMsg = NSDuplicateMessage(msg);\r
-\r
- OICStrcpy(newMsg->providerId, UUID_STRING_SIZE, NSGetProviderInfo()->providerId);\r
-\r
NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_NOTIFICATION, newMsg);\r
\r
pthread_mutex_unlock(&nsInitMutex);\r
NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type)\r
{\r
NS_LOG(DEBUG, "NSProviderReadCheck - IN");\r
-\r
pthread_mutex_lock(&nsInitMutex);\r
+\r
NSSyncInfo * syncInfo = (NSSyncInfo *)OICMalloc(sizeof(NSSyncInfo));\r
OICStrcpy(syncInfo->providerId, UUID_STRING_SIZE, NSGetProviderInfo()->providerId);\r
syncInfo->messageId = messageId;\r
syncInfo->state = type;\r
-\r
NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_READ, syncInfo);\r
- pthread_mutex_unlock(&nsInitMutex);\r
\r
+ pthread_mutex_unlock(&nsInitMutex);\r
NS_LOG(DEBUG, "NSProviderReadCheck - OUT");\r
return NS_OK;\r
}\r
return NS_OK;\r
}\r
\r
+NSMessage * NSCreateMessage()\r
+{\r
+ NS_LOG(DEBUG, "NSCreateMessage - IN");\r
+\r
+ pthread_mutex_lock(&nsInitMutex);\r
+ NSMessage * msg = NSInitializeMessage();\r
+ msg->messageId = OICGetCurrentTime(TIME_IN_MS);\r
+ OICStrcpy(msg->providerId, UUID_STRING_SIZE, NSGetProviderInfo()->providerId);\r
+ pthread_mutex_unlock(&nsInitMutex);\r
+\r
+ NS_LOG(DEBUG, "NSCreateMessage - OUT");\r
+ return msg;\r
+}\r
+\r
void * NSInterfaceSchedule(void * ptr)\r
{\r
if (ptr == NULL)\r
}\r
\r
pthread_mutex_unlock(&NSMutex[INTERFACE_SCHEDULER]);\r
-\r
}\r
\r
NS_LOG(DEBUG, "Destroy NSResponseSchedule");\r
\r
void NSProviderAdapterStateListener(CATransportAdapter_t adapter, bool enabled);\r
\r
-NSResult NSMakeTask(NSTaskType type, OCEntityHandlerRequest *request, NSTask * task);\r
-\r
#endif /* _NS_PROVIDER_LISTENER__H_ */\r
}
OCRepPayloadSetUri(*msgPayload, NS_COLLECTION_MESSAGE_URI);
+ OCRepPayloadSetPropInt(*msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->messageId);
+ OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_TITLE, msg->providerId);
- OCRepPayloadSetPropInt(msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->messageId);
+ NSDuplicateSetPropertyInt(msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->type);
+ NSDuplicateSetPropertyInt(msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->ttl);
+ NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_DATETIME, msg->dateTime);
NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_TITLE, msg->title);
NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_TEXT, msg->contentText);
NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_SOURCE, msg->sourceName);
OCRepPayloadSetUri(*syncPayload, NS_COLLECTION_SYNC_URI);
- NSDuplicateSetPropertyString(syncPayload, NS_ATTRIBUTE_PROVIDER_ID, sync->providerId);
- OCRepPayloadSetPropInt(syncPayload, NS_ATTRIBUTE_MESSAGE_ID, sync->messageId);
+ OCRepPayloadSetPropString(*syncPayload, NS_ATTRIBUTE_PROVIDER_ID, sync->providerId);
+ OCRepPayloadSetPropInt(*syncPayload, NS_ATTRIBUTE_MESSAGE_ID, sync->messageId);
OCRepPayloadSetPropInt(*syncPayload, NS_ATTRIBUTE_STATE, sync->state);
NS_LOG(DEBUG, "NSSetSyncPayload - OUT");
it = it->next;
}
- NS_LOG_V(DEBUG, "observer Count = %d", obCount);
-
for (i = 0; i < obCount; ++i)
{
NS_LOG(DEBUG, "-------------------------------------------------------message\n");
NS_LOG(DEBUG, "-------------------------------------------------------message\n");
}
+ if(!obCount)
+ {
+ NS_LOG(ERROR, "observer count is zero");
+ return NS_ERROR;
+ }
+
OCStackResult ocstackResult = OCNotifyListOfObservers(rHandle, obArray, obCount, payload,
OC_LOW_QOS);
NS_LOG(ERROR, "fail to send Sync");
OCRepPayloadDestroy(payload);
return NS_ERROR;
-
}
OCRepPayloadDestroy(payload);
}\r
\r
OCRepPayloadSetUri(payload, NS_ROOT_URI);\r
+ OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_PROVIDER_ID, NSGetProviderInfo()->providerId);\r
OCRepPayloadSetPropInt(payload, NS_ATTRIBUTE_POLICY, NSGetSubscriptionAccepter());\r
OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_MESSAGE, NS_COLLECTION_MESSAGE_URI);\r
OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_SYNC, NS_COLLECTION_SYNC_URI);\r
{\r
NS_LOG(DEBUG, "NSHandleSubscription - IN");\r
\r
+ char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+\r
+ if(!id)\r
+ {\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
+ NS_LOG(ERROR, "Invalid ConsumerID");\r
+ return;\r
+ }\r
+\r
if (resourceType == NS_RESOURCE_MESSAGE)\r
{\r
NS_LOG(DEBUG, "resourceType == NS_RESOURCE_MESSAGE");\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
OICFree(id);\r
+\r
subData->isWhite = false;\r
subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
subData->syncObId = 0;\r
{\r
NS_LOG(DEBUG, "resourceType == NS_RESOURCE_SYNC");\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
-\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
OICFree(id);\r
\r
{\r
NS_LOG(ERROR, "Fail to write cache");\r
}\r
+\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
}\r
\r
NS_LOG(DEBUG, "NSHandleSubscription - OUT");\r
{\r
NS_LOG(DEBUG, "NSHandleUnsubscription - IN");\r
\r
+ char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+\r
+ if(!id)\r
+ {\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
+ NS_LOG(ERROR, "Invalid ConsumerID");\r
+ return;\r
+ }\r
+\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
-\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
- OICFree(id);\r
-\r
subData->isWhite = false;\r
subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
\r
}\r
\r
NS_LOG(DEBUG, "NSHandleUnsubscription - IN");\r
+\r
+ OICFree(id);\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
}\r
\r
return OC_EH_ERROR;\r
}\r
\r
+ char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+\r
+ if(!id)\r
+ {\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
+ NS_LOG(ERROR, "Invalid ConsumerID");\r
+ return NS_ERROR;\r
+ }\r
+\r
if (accepted)\r
{\r
NS_LOG(DEBUG, "accepted is true");\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
-\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
OICFree(id);\r
subData->isWhite = true;\r
}\r
}\r
\r
- char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
NSSendResponse(id, accepted);\r
\r
OICFree(id);\r
#include "NSConstants.h"\r
#include "oic_malloc.h"\r
#include "NSStructs.h"\r
+#include "NSUtil.h"\r
\r
void NSSetProviderConnectionState(NSConnectionState state);\r
NSConnectionState NSGetProviderConnectionState();\r