related sturct and queryparam
authorjaesick.shin <jaesick.shin@samsung.com>
Wed, 15 Jun 2016 06:18:38 +0000 (15:18 +0900)
committerUze Choi <uzchoi@samsung.com>
Thu, 16 Jun 2016 06:33:46 +0000 (06:33 +0000)
1. modify logic about related NSMessage, NSSynInfo of struct.
2. Added NSGeneratedUUIDStr function (providerid, consumer id)
3. Added NSGetValueFromQuery function (related using the queryparam)
and modified logic of 2,3

fifth patch included
apply to resource protocol about response.

Change-Id: I360c3d9a3f1021a74bb2ad8484355e7201c27a89
Signed-off-by: jaesick.shin <jaesick.shin@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/8659
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
17 files changed:
service/notification/android/notification-service/src/main/jni/notificationProvider.c
service/notification/examples/linux/notificationprovider.c
service/notification/include/NSCommon.h
service/notification/include/NSProviderInterface.h
service/notification/src/common/NSConstants.h
service/notification/src/common/NSStructs.h
service/notification/src/common/NSUtil.c
service/notification/src/common/NSUtil.h
service/notification/src/consumer/NSConsumerCommunication.c
service/notification/src/provider/NSProviderInterface.c
service/notification/src/provider/NSProviderNotification.c
service/notification/src/provider/NSProviderResource.c
service/notification/src/provider/NSProviderResource.h
service/notification/src/provider/NSProviderSubscription.c
service/notification/src/provider/NSProviderSystem.c
service/notification/src/provider/NSProviderSystem.h
service/notification/src/provider/cache/linux/NSProviderMemoryCache.c

index d8549eb..1567393 100644 (file)
@@ -151,8 +151,8 @@ void NSSubscribeRequestCb(NSConsumer *consumer)
         }\r
     }\r
 \r
-    LOGI("consumer ID : %s\n", consumer->mDeviceId);\r
-    jstring consumerId = (*env)->NewStringUTF(env, consumer->mDeviceId);\r
+    LOGI("consumer ID : %s\n", consumer->consumerId);\r
+    jstring consumerId = (*env)->NewStringUTF(env, consumer->consumerId);\r
 \r
     jclass cls = (*env)->GetObjectClass(env, g_obj_subscriptionListener);\r
     if (!cls)\r
index b9c71e4..abb3fc8 100644 (file)
@@ -56,8 +56,7 @@ void subscribeRequestCallback(NSConsumer *consumer)
 {\r
     OIC_LOG(INFO, TAG, "consumer requested to subscribe");\r
 \r
-    printf("NS_APP Consumer Address ID: %s\n", consumer->mAddress);\r
-    printf("NS_APP Consumer Device ID: %s\n", consumer->mDeviceId);\r
+    printf("NS_APP Consumer Device ID: %s\n", consumer->consumerId);\r
 \r
     NSAccept(consumer, true);\r
 }\r
@@ -134,7 +133,7 @@ int main()
 \r
                 NSMessage * msg = (NSMessage *)OICMalloc(sizeof(NSMessage));\r
 \r
-                msg->title = strdup(title);\r
+                msg->title = OICStrdup(title);\r
                 msg->contentText = OICStrdup(body);\r
                 msg->sourceName = OICStrdup("OCF");\r
 \r
index 811b980..319dff0 100644 (file)
@@ -86,10 +86,10 @@ typedef enum
  */
 typedef enum
 {
-    NS_MESSAGE_ALERT = 0,
-    NS_MESSAGE_NOTICE = 1,
-    NS_MESSAGE_EVENT = 2,
-    NS_MESSAGE_INFO = 3,
+    NS_MESSAGE_ALERT = 1,
+    NS_MESSAGE_NOTICE = 2,
+    NS_MESSAGE_EVENT = 3,
+    NS_MESSAGE_INFO = 4,
 
 } NSMessageType;
 
@@ -98,8 +98,7 @@ typedef enum
  */
 typedef struct
 {
-    char * mDeviceId;
-    char * mAddress;
+    char consumerId[37];
 
 } NSConsumer;
 
@@ -133,7 +132,7 @@ typedef struct
 {
     //Mandatory
     uint64_t messageId;
-    char * providerId;
+    char providerId[37];
 
     //optional
     NSMessageType type;
@@ -142,7 +141,7 @@ typedef struct
     char * title;
     char * contentText;
     char * sourceName;
-    NSMediaContents mediaContents;
+    NSMediaContents mediaContents;
 
 } NSMessage;
 
@@ -152,7 +151,7 @@ typedef struct
 typedef struct
 {
     uint64_t messageId;
-    char * providerId;
+    char providerId[37];
     NSSyncType state;
 
 } NSSyncInfo;
index de91a9d..db2835a 100644 (file)
@@ -47,7 +47,7 @@ typedef void (*NSSubscribeRequestCallback)(NSConsumer *);
  * synchronization\r
  * @param[in] sync        Synchronization information of the notification message\r
  */\r
-typedef void (*NSSyncCallback)(NSSyncInfo *);\r
+typedef void (*NSProviderSyncInfoCallback)(NSSyncInfo *);\r
 \r
 /**\r
  * Initialize notification service for provider\r
@@ -58,7 +58,7 @@ typedef void (*NSSyncCallback)(NSSyncInfo *);
  * @return ::NS_OK or result code of NSResult\r
  */\r
 NSResult NSStartProvider(NSAccessPolicy policy, NSSubscribeRequestCallback subscribeRequestCb,\r
-        NSSyncCallback syncCb);\r
+        NSProviderSyncInfoCallback syncCb);\r
 \r
 /**\r
  * Terminate notification service for provider\r
@@ -94,7 +94,7 @@ NSResult NSAccept(NSConsumer *consumer, bool accepted);
  * @param[in]  message  Notification message to synchronize the status\r
  * @return ::NS_OK or result code of NSResult\r
  */\r
-NSResult NSReadCheck(NSMessage *);\r
+NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type);\r
 \r
 #ifdef __cplusplus\r
 }\r
index 76f52f3..34cd51f 100644 (file)
     }
 #endif
 
-#define NS_TAG "IOT_NOTI"
+#define NS_TAG                     "IOT_NOTI"
 
 // SCHEDULE //
-#define THREAD_COUNT 4
+#define THREAD_COUNT               4
 
 // NOTIOBJ // 
-#define NOTIOBJ_TITLE_KEY "title"
-#define NOTIOBJ_ID_KEY "id"
-#define NOTOOBJ_CONTENT_KEY "contentText"
-
-#define DISCOVERY_TAG "NS_PROVIDER_DISCOVERY"
-#define SUBSCRIPTION_TAG "NS_PROVIDER_SUBSCRIPTION"
-#define INTERFACE_TAG "NS_PROVIDER_INTERFACE"
-#define NOTIFICATION_TAG "NS_PROVIDER_NOTIFICATION"
-#define SCHEDULER_TAG "NS_PROVIDER_SCHEDULER"
-#define LISTENER_TAG "NS_PROVIDER_LISTENER"
-#define RESOURCE_TAG "NS_PROVIDER_RESOURCE"
-
-#define NS_ROOT_TYPE "oic.r.notification"
+#define NOTIOBJ_TITLE_KEY          "title"
+#define NOTIOBJ_ID_KEY             "id"
+#define NOTOOBJ_CONTENT_KEY        "contentText"
+
+#define DISCOVERY_TAG              "NS_PROVIDER_DISCOVERY"
+#define SUBSCRIPTION_TAG           "NS_PROVIDER_SUBSCRIPTION"
+#define INTERFACE_TAG              "NS_PROVIDER_INTERFACE"
+#define NOTIFICATION_TAG           "NS_PROVIDER_NOTIFICATION"
+#define SCHEDULER_TAG              "NS_PROVIDER_SCHEDULER"
+#define LISTENER_TAG               "NS_PROVIDER_LISTENER"
+#define RESOURCE_TAG               "NS_PROVIDER_RESOURCE"
+
+#define NS_ROOT_TYPE               "oic.r.notification"
 #define NS_COLLECTION_MESSAGE_TYPE "oic.r.notification.message"
-#define NS_COLLECTION_SYNC_TYPE "oic.r.notification.sync"
+#define NS_COLLECTION_SYNC_TYPE    "oic.r.notification.sync"
 
-#define NS_DEFAULT_INTERFACE "oic.if.baseline"
+#define NS_DEFAULT_INTERFACE       "oic.if.baseline"
 
-#define NS_ROOT_URI "/notification"
-#define NS_COLLECTION_MESSAGE_URI "/notification/message"
-#define NS_COLLECTION_SYNC_URI "/notification/sync"
+#define NS_ROOT_URI                "/notification"
+#define NS_COLLECTION_MESSAGE_URI  "/notification/message"
+#define NS_COLLECTION_SYNC_URI     "/notification/sync"
+
+#define NS_QUERY_SEPARATOR         "&;"
+#define NS_KEY_VALUE_DELIMITER     "="
+
+#define NS_QUERY_CONSUMER_ID       "consumerid"
+#define NS_QUERY_PROVIDER_ID       "providerid"
+
+#define NS_QUERY_ID_SIZE           10
 
 typedef enum eConnectionState
 {
index 49ed6ae..2cab5f5 100644 (file)
@@ -76,9 +76,19 @@ typedef struct
 typedef struct\r
 {\r
     OCResourceHandle handle;\r
-    char* id;\r
-    char* title;\r
-    char* body;\r
+\r
+    uint64_t messageId;\r
+    char providerId[37];\r
+\r
+    //optional\r
+    NSMessageType type;\r
+    char * dateTime;\r
+    uint64_t ttl;\r
+    char * title;\r
+    char * contentText;\r
+    char * sourceName;\r
+    NSMediaContents * mediaContents;\r
+\r
 } NSMessageResource;\r
 \r
 typedef struct\r
@@ -88,4 +98,10 @@ typedef struct
     char* state;\r
 } NSSyncResource;\r
 \r
+typedef struct\r
+{\r
+  char providerId[37];\r
+  char * providerName;\r
+} NSProviderInfo;\r
+\r
 #endif /* _NS_STRUCTS_H_ */\r
index ebc7afc..dae0647 100755 (executable)
@@ -32,7 +32,6 @@ OCEntityHandlerRequest *NSCopyOCEntityHandlerRequest(OCEntityHandlerRequest *ent
         // Do shallow copy
         memcpy(copyOfRequest, entityHandlerRequest, sizeof(OCEntityHandlerRequest));
 
-
         if (copyOfRequest->query)
         {
             copyOfRequest->query = OICStrdup(entityHandlerRequest->query);
@@ -163,18 +162,6 @@ NSResult NSFreeSync(NSSyncInfo * obj)
         return NS_ERROR;
     }
 
-    if (obj->messageId)
-    {
-        obj->messageId = 0;
-    }
-
-    if (obj->providerId)
-    {
-        NS_LOG_V(DEBUG, "obj->mSourceid = %s", obj->providerId);
-        OICFree(obj->providerId);
-        obj->providerId = NULL;
-    }
-
     OICFree(obj);
 
     return NS_OK;
@@ -191,20 +178,9 @@ NSSyncInfo* NSDuplicateSync(NSSyncInfo * copyMsg)
     }
 
     newMsg = (NSSyncInfo *)OICMalloc(sizeof(NSSyncInfo));
-    newMsg->messageId = 0;
-    newMsg->providerId = NULL;
-    newMsg->state = -1;
-
-    if (copyMsg->messageId)
-    {
-        newMsg->messageId = copyMsg->messageId;
-    }
-
-    if (copyMsg->providerId)
-    {
-        newMsg->providerId = OICStrdup(copyMsg->providerId);
-    }
 
+    newMsg->messageId = copyMsg->messageId;
+    OICStrcpy(newMsg->providerId, UUID_STRING_SIZE, copyMsg->providerId);
     newMsg->state = copyMsg->state;
 
     return newMsg;
@@ -217,19 +193,10 @@ NSResult NSFreeConsumer(NSConsumer * obj)
         return NS_ERROR;
     }
 
-    if (obj->mAddress)
-    {
-        OICFree(obj->mAddress);
-        obj->mAddress = NULL;
-    }
-
-    if (obj->mDeviceId)
-    {
-        OICFree(obj->mDeviceId);
-        obj->mDeviceId = NULL;
-    }
+    (obj->consumerId)[0] = '\0';
 
     OICFree(obj);
+    obj = NULL;
 
     return NS_OK;
 }
@@ -245,18 +212,9 @@ NSConsumer* NSDuplicateConsumer(NSConsumer * copyMsg)
     }
 
     newMsg = (NSConsumer *)OICMalloc(sizeof(NSConsumer));
-    newMsg->mAddress = NULL;
-    newMsg->mDeviceId = NULL;
-
-    if (copyMsg->mAddress)
-    {
-        newMsg->mAddress = OICStrdup(copyMsg->mAddress);
-    }
+    (newMsg->consumerId)[0] = '\0';
 
-    if (copyMsg->mDeviceId)
-    {
-        newMsg->mDeviceId = OICStrdup(copyMsg->mDeviceId);
-    }
+    OICStrcpy(newMsg->consumerId, UUID_STRING_SIZE, copyMsg->consumerId);
 
     return newMsg;
 }
@@ -268,16 +226,14 @@ void NSDuplicateSetPropertyString(OCRepPayload** msgPayload, const char * name,
     {
         OCRepPayloadSetPropString(*msgPayload, name, copyString);
     }
-    else
-    {
-        OCRepPayloadSetNull(*msgPayload, name);
-    }
 }
 
 
 NSSyncInfo * NSGetSyncInfo(OCPayload * payload)
 {
-    NS_LOG(DEBUG, "NSBuildOICNotificationSync - IN");
+    NS_LOG(DEBUG, "NSGetSyncInfo - IN");
+    char * providerId = NULL;
+    int64_t state;
 
     if(!payload)
     {
@@ -298,12 +254,13 @@ NSSyncInfo * NSGetSyncInfo(OCPayload * payload)
         OICFree(retSync);
         return NULL;
     }
-    if (!OCRepPayloadGetPropString(repPayload, NS_ATTRIBUTE_PROVIDER_ID, &retSync->providerId))
+
+    if (!OCRepPayloadGetPropString(repPayload, NS_ATTRIBUTE_PROVIDER_ID, &providerId))
     {
         OICFree(retSync);
         return NULL;
     }
-    int64_t state;
+
     if (!OCRepPayloadGetPropInt(repPayload, NS_ATTRIBUTE_STATE, &state))
     {
         OICFree(retSync);
@@ -311,11 +268,69 @@ NSSyncInfo * NSGetSyncInfo(OCPayload * payload)
     }
 
     retSync->state = (NSSyncType) state;
+    OICStrcpy(retSync->providerId, UUID_STRING_SIZE, providerId);
+    OICFree(providerId);
 
-    NS_LOG_V(DEBUG, "Sync ID : %ld", retSync->messageId);
+    NS_LOG_V(DEBUG, "Provider ID : %s", retSync->providerId);
+    NS_LOG_V(DEBUG, "Sync ID : %lld", retSync->messageId);
     NS_LOG_V(DEBUG, "Sync State : %d", (int) retSync->state);
 
-    NS_LOG(DEBUG, "NSBuildOICNotificationSync - OUT");
+    NS_LOG(DEBUG, "NSGetSyncInfo - OUT");
 
     return retSync;
 }
+
+NSResult NSGenerateUUIDStr(char uuidStr[UUID_STRING_SIZE])
+{
+    uint8_t uuid[UUID_SIZE] = { 0, };
+
+    if (RAND_UUID_OK == OCGenerateUuid(uuid))
+    {
+        if (RAND_UUID_OK == OCConvertUuidToString(uuid, uuidStr))
+        {
+            return NS_OK;
+        }
+    }
+    return NS_ERROR;
+}
+
+char * NSGetValueFromQuery(char *query, char * compareKey)
+{
+
+    char *key = NULL;
+    char *value = NULL;
+    char *restOfQuery = NULL;
+    int numKeyValuePairsParsed = 0;
+
+    NS_LOG_V(INFO, "NS Query Params = %s", query);
+
+    char *keyValuePair = strtok_r (query, NS_QUERY_SEPARATOR, &restOfQuery);
+
+    while(keyValuePair)
+    {
+        if (numKeyValuePairsParsed >= 2)
+        {
+            NS_LOG(ERROR, "More than 2 queries params in URI.");
+            return NULL;
+        }
+
+        key = strtok_r(keyValuePair, NS_KEY_VALUE_DELIMITER, &value);
+
+        if (!key || !value)
+        {
+            NS_LOG(ERROR, "More than 2 queries params in URI.");
+            return NULL;
+        }
+
+        if (strcmp(key, compareKey) == 0)
+        {
+            return value;
+        }
+
+        ++numKeyValuePairsParsed;
+
+        keyValuePair = strtok_r(NULL, NS_QUERY_SEPARATOR, &restOfQuery);
+    }
+
+    return NULL;
+}
index abab2b6..4b51b85 100755 (executable)
@@ -31,6 +31,7 @@
 #include "NSConstants.h"\r
 #include "oic_malloc.h"\r
 #include "oic_string.h"\r
+#include "ocrandom.h"\r
 \r
 OCEntityHandlerRequest *NSCopyOCEntityHandlerRequest(OCEntityHandlerRequest *);\r
 NSResult NSFreeOCEntityHandlerRequest(OCEntityHandlerRequest *);\r
@@ -46,7 +47,9 @@ NSResult NSFreeConsumer(NSConsumer *);
 NSConsumer * NSDuplicateConsumer(NSConsumer *);\r
 \r
 void NSDuplicateSetPropertyString(OCRepPayload **, const char *, const char *);\r
+NSResult NSGenerateUUIDStr(char uuidStr[UUID_STRING_SIZE]);\r
 \r
+char * NSGetValueFromQuery(char *query, char * compareKey);\r
 \r
 \r
 #endif /* _NS_UTIL__H_ */\r
index 04cb312..c8410ca 100644 (file)
@@ -243,7 +243,7 @@ NSSyncInfo * NSGetNSSyncInfo(OCClientResponse * clientResponse)
 
     retSync->messageId = id;
     retSync->state = (NSSyncType) state;
-    retSync->providerId = pId;
+    (retSync->providerId)[0] = '\0';
 
     NS_LOG_V(DEBUG, "Sync ID : %ld", retSync->messageId);
     NS_LOG_V(DEBUG, "Sync State : %d", (int) retSync->state);
index fb61d6d..4b3deda 100644 (file)
 #include "oic_malloc.h"\r
 #include "oic_string.h"\r
 #include "cautilinterface.h"\r
+#include "NSProviderSystem.h"\r
+#include "oic_time.h"\r
 \r
 bool initProvider = false;\r
 static NSSubscribeRequestCallback g_subscribeRequestCb = NULL;\r
-static NSSyncCallback g_syncCb = NULL;\r
+static NSProviderSyncInfoCallback g_syncCb = NULL;\r
 \r
 pthread_mutex_t nsInitMutex;\r
 \r
@@ -48,7 +50,7 @@ void NSRegisterSubscribeRequestCb(NSSubscribeRequestCallback subscribeRequestCb)
     NS_LOG(DEBUG, "NSRegisterSubscribeRequestCb - OUT");\r
 }\r
 \r
-void  NSRegisterSyncCb(NSSyncCallback syncCb)\r
+void  NSRegisterSyncCb(NSProviderSyncInfoCallback syncCb)\r
 {\r
     NS_LOG(DEBUG, "NSRegisterSyncCb - IN");\r
     g_syncCb = syncCb;\r
@@ -70,7 +72,7 @@ void NSSyncCb(NSSyncInfo *sync)
 }\r
 \r
 NSResult NSStartProvider(NSAccessPolicy policy, NSSubscribeRequestCallback subscribeRequestCb,\r
-        NSSyncCallback syncCb)\r
+        NSProviderSyncInfoCallback syncCb)\r
 {\r
     NS_LOG(DEBUG, "NSStartProvider - IN");\r
 \r
@@ -82,6 +84,7 @@ NSResult NSStartProvider(NSAccessPolicy policy, NSSubscribeRequestCallback subsc
     {\r
         NS_LOG(DEBUG, "Init Provider");\r
         initProvider = true;\r
+        NSInitProviderInfo();\r
         NSSetSubscriptionAccessPolicy(policy);\r
         NSRegisterSubscribeRequestCb(subscribeRequestCb);\r
         NSRegisterSyncCb(syncCb);\r
@@ -123,9 +126,10 @@ NSResult NSStopProvider()
 \r
     if(initProvider)\r
     {\r
+        NSDeinitProviderInfo();\r
         NSUnRegisterResource();\r
         NSRegisterSubscribeRequestCb((NSSubscribeRequestCallback)NULL);\r
-        NSRegisterSyncCb((NSSyncCallback)NULL);\r
+        NSRegisterSyncCb((NSProviderSyncInfoCallback)NULL);\r
         NSStopScheduler();\r
         NSStorageDestroy(consumerSubList);\r
         NSStorageDestroy(messageList);\r
@@ -153,6 +157,8 @@ NSResult NSSendMessage(NSMessage *msg)
 \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
@@ -161,12 +167,17 @@ NSResult NSSendMessage(NSMessage *msg)
     return NS_OK;\r
 }\r
 \r
-NSResult NSReadCheck(NSMessage *msg)\r
+NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type)\r
 {\r
     NS_LOG(DEBUG, "NSProviderReadCheck - IN");\r
 \r
     pthread_mutex_lock(&nsInitMutex);\r
-    NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_READ, msg);\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
     NS_LOG(DEBUG, "NSProviderReadCheck - OUT");\r
@@ -222,8 +233,17 @@ void * NSInterfaceSchedule(void * ptr)
 \r
                     OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
                     NSConsumer * consumer = (NSConsumer *)OICMalloc(sizeof(NSConsumer));\r
-                    consumer->mDeviceId = OICStrdup(request->devAddr.addr);\r
-                    consumer->mAddress = OICStrdup(request->devAddr.addr);\r
+\r
+                    char * consumerId = NSGetValueFromQuery(request->query, NS_QUERY_CONSUMER_ID);\r
+                    if(!consumerId)\r
+                    {\r
+                        NSFreeConsumer(consumer);\r
+                        NS_LOG(ERROR, "Consumer ID NULL");\r
+                        break;\r
+                    }\r
+\r
+                    OICStrcpy(consumer->consumerId, UUID_STRING_SIZE, consumerId);\r
+                    OICFree(consumerId);\r
 \r
                     NSSubscribeRequestCb(consumer);\r
                     NSFreeConsumer(consumer);\r
index 3af6f28..553e376 100644 (file)
@@ -45,7 +45,7 @@ NSResult NSSetMessagePayload(NSMessage *msg, OCRepPayload** msgPayload)
 
     OCRepPayloadSetUri(*msgPayload, NS_COLLECTION_MESSAGE_URI);
 
-    NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->messageId);
+    OCRepPayloadSetPropInt(msgPayload, NS_ATTRIBUTE_MESSAGE_ID, msg->messageId);
     NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_TITLE, msg->title);
     NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_TEXT, msg->contentText);
     NSDuplicateSetPropertyString(msgPayload, NS_ATTRIBUTE_SOURCE, msg->sourceName);
@@ -68,9 +68,8 @@ NSResult NSSetSyncPayload(NSSyncInfo *sync, OCRepPayload** syncPayload)
 
     OCRepPayloadSetUri(*syncPayload, NS_COLLECTION_SYNC_URI);
 
-    NSDuplicateSetPropertyString(syncPayload, NS_ATTRIBUTE_MESSAGE_ID, sync->messageId);
     NSDuplicateSetPropertyString(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");
index 84801a6..d9b6485 100644 (file)
@@ -50,10 +50,16 @@ NSResult NSCreateResource(char *uri)
     else if (strcmp(uri, NS_COLLECTION_MESSAGE_URI) == 0)
     {
 
-        NotificationMessageResource.id = NULL;
+        NotificationMessageResource.messageId = 0;
+
+        (NotificationMessageResource.providerId)[0] = '\0';
+        NotificationMessageResource.type = 0;
+        NotificationMessageResource.dateTime = NULL;
+        NotificationMessageResource.ttl = 0;
         NotificationMessageResource.title = NULL;
-        NotificationMessageResource.body = NULL;
-        NotificationMessageResource.handle = NULL;
+        NotificationMessageResource.contentText = NULL;
+        NotificationMessageResource.sourceName = NULL;
+        NotificationMessageResource.mediaContents = NULL;
 
         if (OCCreateResource(&NotificationMessageResource.handle, NS_COLLECTION_MESSAGE_TYPE,
                 NS_DEFAULT_INTERFACE, NS_COLLECTION_MESSAGE_URI, NSEntityHandlerMessageCb, NULL,
@@ -161,9 +167,15 @@ NSResult NSPutMessageResource(NSMessage *msg, OCResourceHandle * handle)
     {
         NS_LOG(DEBUG, "NSMessage is valid");
 
-        NotificationMessageResource.id = OICStrdup(msg->messageId);
-        NotificationMessageResource.title = OICStrdup(msg->title);
-        NotificationMessageResource.body = OICStrdup(msg->contentText);
+        NotificationMessageResource.messageId = msg->messageId;
+        OICStrcpy(NotificationMessageResource.providerId, UUID_STRING_SIZE, msg->providerId);
+        NotificationMessageResource.type = msg->type;
+        NotificationMessageResource.dateTime = msg->dateTime;
+        NotificationMessageResource.ttl = msg->ttl;
+        NotificationMessageResource.title = msg->title;
+        NotificationMessageResource.contentText = msg->contentText;
+        NotificationMessageResource.sourceName = msg->sourceName;
+        NotificationMessageResource.mediaContents = msg->mediaContents;
     }
     else
     {
index 2290beb..1927652 100644 (file)
@@ -40,12 +40,4 @@ NSResult NSPutMessageResource(NSMessage *msg, OCResourceHandle * handle);
 
 NSResult NSPutSyncResource(NSSyncInfo *sync, OCResourceHandle * handle);
 
-const char* NSGetNotificationMessageUri();
-
-const char* NSGetNotificationSyncUri();
-
-const char* NSGetNotificationUri();
-
-NSResult NSCopyString(char** targetString, const char* sourceString);
-
 #endif /* _NS_PROVIDER_RESOURCE_H_ */
index bd97046..c9aeb60 100644 (file)
@@ -116,7 +116,9 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour
         NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
         NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
 \r
-        subData->id = OICStrdup(entityHandlerRequest->devAddr.addr);\r
+        char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+        OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
+        OICFree(id);\r
         subData->isWhite = false;\r
         subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
         subData->syncObId = 0;\r
@@ -150,7 +152,10 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour
 \r
         NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
 \r
-        subData->id = OICStrdup(entityHandlerRequest->devAddr.addr);\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->syncObId = entityHandlerRequest->obsInfo.obsId;\r
         subData->messageObId = 0;\r
@@ -176,7 +181,11 @@ void NSHandleUnsubscription(OCEntityHandlerRequest *entityHandlerRequest)
 \r
     NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
     NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
-    subData->id = OICStrdup(entityHandlerRequest->devAddr.addr);\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
@@ -223,7 +232,7 @@ NSResult NSSendResponse(const char * id, bool accepted)
     }\r
 \r
     OCRepPayloadSetUri(payload, NS_COLLECTION_MESSAGE_URI);\r
-    OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_MESSAGE_ID, "0000-0000-0000-0000");\r
+    OCRepPayloadSetPropInt(payload, NS_ATTRIBUTE_MESSAGE_ID, 1);\r
     OCRepPayloadSetPropBool(payload, NS_ATTRIBUTE_ACCPETANCE, accepted);\r
 \r
     NSCacheElement * element = NSStorageRead(consumerSubList, id);\r
@@ -265,7 +274,9 @@ NSResult NSSendSubscriptionResponse(OCEntityHandlerRequest *entityHandlerRequest
         NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
 \r
         NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
-        subData->id = OICStrdup(entityHandlerRequest->devAddr.addr);\r
+        char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+        OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
+        OICFree(id);\r
         subData->isWhite = true;\r
         subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
 \r
@@ -278,7 +289,10 @@ NSResult NSSendSubscriptionResponse(OCEntityHandlerRequest *entityHandlerRequest
         }\r
     }\r
 \r
-    NSSendResponse(entityHandlerRequest->devAddr.addr, accepted);\r
+    char * id = NSGetValueFromQuery(entityHandlerRequest->query, NS_QUERY_CONSUMER_ID);\r
+    NSSendResponse(id, accepted);\r
+\r
+    OICFree(id);\r
     NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
 \r
     NS_LOG(DEBUG, "NSSendSubscriptionResponse - OUT");\r
@@ -325,11 +339,8 @@ void * NSSubScriptionSchedule(void *ptr)
                     NS_LOG(DEBUG, "CASE TASK_SEND_ALLOW : ");\r
                     NSConsumer * consumer = (NSConsumer *) node->taskData;\r
 \r
-                    char * id = OICStrdup(consumer->mDeviceId);\r
-\r
-                    NSCacheUpdateSubScriptionState(consumerSubList, id, true);\r
-                    NSSendResponse(id, true);\r
-                    OICFree(id);\r
+                    NSCacheUpdateSubScriptionState(consumerSubList, consumer->consumerId, true);\r
+                    NSSendResponse(consumer->consumerId, true);\r
                     NSFreeConsumer(consumer);\r
                     break;\r
                 }\r
@@ -338,11 +349,8 @@ void * NSSubScriptionSchedule(void *ptr)
                     NS_LOG(DEBUG, "CASE TASK_SEND_DENY : ");\r
                     NSConsumer * consumer = (NSConsumer *) node->taskData;\r
 \r
-                    char * id = OICStrdup(consumer->mDeviceId);\r
-\r
-                    NSCacheUpdateSubScriptionState(consumerSubList, id, false);\r
-                    NSSendResponse(id, false);\r
-                    OICFree(id);\r
+                    NSCacheUpdateSubScriptionState(consumerSubList, consumer->consumerId, false);\r
+                    NSSendResponse(consumer->consumerId, false);\r
                     NSFreeConsumer(consumer);\r
 \r
                     break;\r
index b807d41..2190978 100644 (file)
@@ -20,6 +20,7 @@
 #include "NSProviderSystem.h"\r
 \r
 static NSConnectionState NSProviderConnectionState;\r
+NSProviderInfo * providerInfo;\r
 \r
 void NSSetProviderConnectionState(NSConnectionState state)\r
 {\r
@@ -34,3 +35,40 @@ NSConnectionState NSGetProviderConnectionState()
 \r
     return NSProviderConnectionState;\r
 }\r
+\r
+void NSInitProviderInfo()\r
+{\r
+    NS_LOG(DEBUG, "NSInitProviderInfo");\r
+\r
+    providerInfo = (NSProviderInfo *) OICMalloc(sizeof(NSProviderInfo));\r
+    NSGenerateUUIDStr(providerInfo->providerId);\r
+    providerInfo->providerName = NULL;\r
+}\r
+\r
+void NSDeinitProviderInfo()\r
+{\r
+    NS_LOG(DEBUG, "NSDeinitProviderInfo");\r
+\r
+    if(providerInfo == NULL)\r
+    {\r
+        NS_LOG(DEBUG, "providerInfo is NULL");\r
+        return;\r
+    }\r
+\r
+    if(providerInfo->providerName != NULL)\r
+    {\r
+        OICFree(providerInfo->providerName);\r
+        providerInfo->providerName = NULL;\r
+    }\r
+\r
+    OICFree(providerInfo);\r
+    providerInfo = NULL;\r
+}\r
+\r
+NSProviderInfo * NSGetProviderInfo()\r
+{\r
+    NS_LOG(DEBUG, "Change Connection State");\r
+\r
+    return providerInfo;\r
+}\r
+\r
index 3fceb11..86b07a4 100644 (file)
 #include "logger.h"\r
 #include "NSCommon.h"\r
 #include "NSConstants.h"\r
+#include "oic_malloc.h"\r
+#include "NSStructs.h"\r
 \r
 void NSSetProviderConnectionState(NSConnectionState state);\r
 NSConnectionState NSGetProviderConnectionState();\r
 \r
+void NSInitProviderInfo();\r
+void NSDeinitProviderInfo();\r
+NSProviderInfo * NSGetProviderInfo();\r
+\r
 #endif /* _NS_PROVIDER_SYSTEM__H_ */\r
index f66d7e8..94790f8 100755 (executable)
@@ -49,7 +49,6 @@ NSCacheElement * NSStorageRead(NSCacheList * list, const char * findId)
     NSCacheElement * next = NULL;\r
     NSCacheType type = list->cacheType;\r
 \r
-\r
     NS_LOG_V(DEBUG, "Find ID - %s", findId);\r
 \r
     while (iter)\r