Fix in EnableRemoteService for Notification Service via Cloud
authorjake <jaehong2.lee@samsung.com>
Thu, 23 Mar 2017 07:44:42 +0000 (16:44 +0900)
committerUze Choi <uzchoi@samsung.com>
Fri, 24 Mar 2017 08:50:27 +0000 (08:50 +0000)
When notification message is sent thru cloud, consumer cannot receive.

It worked well from initial development environment
but others reported it does not worked well in some environment.
Initially, to call NSSetRemoteServerAddress(char *serverAddress)
resolves issue by testing but, logic perspective, this is not solution.

MSCacheSubData has messageObserverID, syncObserverID for local and
remote consumer respectively and this structure brings fundamental
complexity inspite they are not handled separately.
This patch remove remote set for these observerIDs member from struct.

Change-Id: I7e5e52487d71cba0cb3c9772fd0436d8e323285e
Signed-off-by: jake <jaehong2.lee@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/17959
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: JungYong KIM <jyong2.kim@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
service/notification/src/common/NSStructs.h
service/notification/src/provider/NSProviderInterface.c
service/notification/src/provider/NSProviderMemoryCache.c
service/notification/src/provider/NSProviderNotification.c
service/notification/src/provider/NSProviderSubscription.c
service/notification/src/provider/NSProviderSystem.c
service/notification/src/provider/NSProviderSystem.h
service/notification/src/provider/NSProviderTopic.c

index 39126bc..a2e4c7b 100644 (file)
@@ -69,8 +69,6 @@ typedef struct
     char id[NS_UUID_STRING_SIZE];\r
     int syncObId; // sync resource observer ID for local consumer\r
     int messageObId; // message resource observer ID for local consumer\r
-    int remote_syncObId; //sync observer ID subscribed through remote server\r
-    int remote_messageObId; //message observer ID subscribed through remote server\r
     bool isWhite; // access state -> True: allowed / False: blocked\r
 \r
 } NSCacheSubData;\r
index 73f3c95..64290fa 100644 (file)
@@ -183,10 +183,6 @@ NSResult NSProviderDisableRemoteService(char *serverAddress)
     }
 
     NS_LOG_V(INFO_PRIVATE, "Remote server address: %s", serverAddress);
-
-    NS_LOG(DEBUG, "Delete remote server info");
-    NSDeleteRemoteServerAddress(serverAddress);
-
     pthread_mutex_unlock(&nsInitMutex);
     NS_LOG(DEBUG, "NSProviderDisableRemoteService - OUT");
     return NS_OK;
index 36e35c0..fc7f5f6 100644 (file)
@@ -111,8 +111,6 @@ NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, char * id, bool stat
             NS_LOG_V(INFO_PRIVATE, "currData_ID = %s", itData->id);\r
             NS_LOG_V(DEBUG, "currData_MsgObID = %d", itData->messageObId);\r
             NS_LOG_V(DEBUG, "currData_SyncObID = %d", itData->syncObId);\r
-            NS_LOG_V(DEBUG, "currData_Cloud_MsgObID = %d", itData->remote_messageObId);\r
-            NS_LOG_V(DEBUG, "currData_Cloud_SyncObID = %d", itData->remote_syncObId);\r
             NS_LOG_V(DEBUG, "currData_IsWhite = %d", itData->isWhite);\r
 \r
             NS_LOG_V(DEBUG, "update state = %d", state);\r
@@ -167,15 +165,11 @@ NSResult NSProviderStorageWrite(NSCacheList * list, NSCacheElement * newObj)
                 NS_LOG_V(INFO_PRIVATE, "currData_ID = %s", itData->id);\r
                 NS_LOG_V(DEBUG, "currData_MsgObID = %d", itData->messageObId);\r
                 NS_LOG_V(DEBUG, "currData_SyncObID = %d", itData->syncObId);\r
-                NS_LOG_V(DEBUG, "currData_Cloud_MsgObID = %d", itData->remote_messageObId);\r
-                NS_LOG_V(DEBUG, "currData_Cloud_SyncObID = %d", itData->remote_syncObId);\r
                 NS_LOG_V(DEBUG, "currData_IsWhite = %d", itData->isWhite);\r
 \r
                 NS_LOG_V(INFO_PRIVATE, "subData_ID = %s", subData->id);\r
                 NS_LOG_V(DEBUG, "subData_MsgObID = %d", subData->messageObId);\r
                 NS_LOG_V(DEBUG, "subData_SyncObID = %d", subData->syncObId);\r
-                NS_LOG_V(DEBUG, "subData_Cloud_MsgObID = %d", subData->remote_messageObId);\r
-                NS_LOG_V(DEBUG, "subData_Cloud_SyncObID = %d", subData->remote_syncObId);\r
                 NS_LOG_V(DEBUG, "subData_IsWhite = %d", subData->isWhite);\r
 \r
                 if (subData->messageObId != 0)\r
@@ -188,17 +182,6 @@ NSResult NSProviderStorageWrite(NSCacheList * list, NSCacheElement * newObj)
                     itData->syncObId = subData->syncObId;\r
                 }\r
 \r
-                if (subData->remote_messageObId != 0)\r
-                {\r
-                    itData->remote_messageObId = subData->remote_messageObId;\r
-                }\r
-\r
-                if (subData->remote_syncObId != 0)\r
-                {\r
-                    itData->remote_syncObId = subData->remote_syncObId;\r
-                    NS_LOG_V(DEBUG, "sync id cached: %d", itData->remote_syncObId);\r
-                }\r
-\r
                 NS_LOG(DEBUG, "Update Data - OUT");\r
                 OICFree(subData);\r
                 OICFree(newObj);\r
@@ -270,13 +253,7 @@ NSResult NSProviderStorageDestroy(NSCacheList * list)
 \r
 bool NSIsSameObId(NSCacheSubData * data, OCObservationId id)\r
 {\r
-    if (id == data->messageObId || id == data->syncObId || id == data->remote_messageObId ||\r
-                id == data->remote_syncObId)\r
-    {\r
-        return true;\r
-    }\r
-\r
-    return false;\r
+    return (id == data->messageObId || id == data->syncObId);\r
 }\r
 \r
 bool NSProviderCompareIdCacheData(NSCacheType type, void * data, const char * id)\r
index 300ef1d..eee46bc 100644 (file)
@@ -147,9 +147,7 @@ NSResult NSSendNotification(NSMessage *msg)
         NSCacheSubData * subData = (NSCacheSubData *) it->data;
         NS_LOG_V(INFO_PRIVATE, "message subData->id = %s", subData->id);
         NS_LOG_V(DEBUG, "subData->messageId = %d", subData->messageObId);
-        NS_LOG_V(DEBUG, "subData->cloud_messageId = %d", subData->remote_messageObId);
         NS_LOG_V(DEBUG, "subData->syncId = %d", subData->syncObId);
-        NS_LOG_V(DEBUG, "subData->cloud_syncId = %d", subData->remote_syncObId);
         NS_LOG_V(DEBUG, "subData->isWhite = %d", subData->isWhite);
 
         if (subData->isWhite)
@@ -170,25 +168,6 @@ NSResult NSSendNotification(NSMessage *msg)
                     obArray[obCount++] = subData->messageObId;
                 }
             }
-
-#if (defined WITH_CLOUD)
-            if (subData->remote_messageObId != 0)
-            {
-                if (msg->topic && (msg->topic)[0] != '\0')
-                {
-                    NS_LOG_V(DEBUG, "this is topic message via remote server: %s", msg->topic);
-                    if (NSProviderIsTopicSubScribed(consumerTopicList->head, subData->id, msg->topic))
-                    {
-                        obArray[obCount++] = subData->remote_messageObId;
-                    }
-                }
-                else
-                {
-                    obArray[obCount++] = subData->remote_messageObId;
-                }
-            }
-#endif
-
         }
         it = it->next;
     }
@@ -250,9 +229,7 @@ NSResult NSSendSync(NSSyncInfo *sync)
         NSCacheSubData * subData = (NSCacheSubData *) it->data;
         NS_LOG_V(INFO_PRIVATE, "sync subData->id = %s", subData->id);
         NS_LOG_V(DEBUG, "subData->messageId = %d", subData->messageObId);
-        NS_LOG_V(DEBUG, "subData->cloud_messageId = %d", subData->remote_messageObId);
         NS_LOG_V(DEBUG, "subData->syncId = %d", subData->syncObId);
-        NS_LOG_V(DEBUG, "subData->cloud_syncId = %d", subData->remote_syncObId);
         NS_LOG_V(DEBUG, "subData->isWhite = %d", subData->isWhite);
 
         if (subData->isWhite)
@@ -261,13 +238,6 @@ NSResult NSSendSync(NSSyncInfo *sync)
             {
                 obArray[obCount++] = subData->syncObId;
             }
-
-#if (defined WITH_CLOUD)
-            if (subData->remote_syncObId != 0)
-            {
-                obArray[obCount++] = subData->remote_syncObId;
-            }
-#endif
         }
         it = it->next;
     }
index 52ad96d..b1f561b 100644 (file)
@@ -149,29 +149,13 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour
 \r
         NS_LOG_V(INFO_PRIVATE, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
 \r
-        subData->remote_messageObId = subData->messageObId = 0;\r
-\r
-        bool iSRemoteServer = false;\r
-\r
-#if(defined WITH_CLOUD)\r
-        iSRemoteServer = NSIsRemoteServerAddress(entityHandlerRequest->devAddr.addr);\r
-        if (iSRemoteServer)\r
-        {\r
-            NS_LOG(DEBUG, "Requested by remote server");\r
-            subData->remote_messageObId = entityHandlerRequest->obsInfo.obsId;\r
-            NS_LOG_V(DEBUG, "SubList message observation ID = [%d]", subData->remote_messageObId);\r
-        }\r
-#endif\r
+        subData->messageObId = 0;\r
 \r
-        if (!iSRemoteServer)\r
-        {\r
-            NS_LOG(DEBUG, "Requested by local consumer");\r
-            subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
-            NS_LOG_V(DEBUG, "SubList message observation ID = [%d]", subData->messageObId);\r
-        }\r
+        NS_LOG(DEBUG, "Requested by local consumer");\r
+        subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
+        NS_LOG_V(DEBUG, "SubList message observation ID = [%d]", subData->messageObId);\r
 \r
         subData->isWhite = false;\r
-        subData->remote_syncObId = 0;\r
         subData->syncObId = 0;\r
 \r
         element->data = (void*) subData;\r
@@ -210,29 +194,15 @@ void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResour
 \r
         NS_LOG_V(INFO_PRIVATE, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
 \r
-        subData->remote_syncObId = subData->syncObId = 0;\r
-        bool isRemoteServer = false;\r
+        subData->syncObId = 0;\r
 \r
-#if (defined WITH_CLOUD)\r
-        isRemoteServer = NSIsRemoteServerAddress(entityHandlerRequest->devAddr.addr);\r
-        if (isRemoteServer)\r
-        {\r
-            NS_LOG(DEBUG, "Requested by remote server");\r
-            subData->remote_syncObId = entityHandlerRequest->obsInfo.obsId;\r
-            NS_LOG_V(DEBUG, "SubList sync observation ID = [%d]", subData->remote_syncObId);\r
-        }\r
-#endif\r
+        NS_LOG(DEBUG, "Requested by local consumer");\r
+        subData->syncObId = entityHandlerRequest->obsInfo.obsId;\r
+        NS_LOG_V(DEBUG, "SubList sync observation ID = [%d]", subData->syncObId);\r
 \r
-        if (!isRemoteServer)\r
-        {\r
-            NS_LOG(DEBUG, "Requested by local consumer");\r
-            subData->syncObId = entityHandlerRequest->obsInfo.obsId;\r
-            NS_LOG_V(DEBUG, "SubList sync observation ID = [%d]", subData->syncObId);\r
-        }\r
 \r
         subData->isWhite = false;\r
         subData->messageObId = 0;\r
-        subData->remote_messageObId = 0;\r
 \r
         element->data = (void*) subData;\r
         element->next = NULL;\r
index a140367..b47f445 100644 (file)
 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
 #include "NSProviderSystem.h"\r
 \r
-#if (defined WITH_CLOUD)\r
-#define MAX_SERVER_ADDRESS 32\r
-static char NSRemoteServerAddress[MAX_SERVER_ADDRESS] = {0,};\r
-#endif\r
-\r
 #ifdef WITH_MQ\r
 static NSMQServerInfo * mqServerInfo = NULL;\r
 #endif\r
@@ -48,33 +43,6 @@ NSConnectionState NSGetProviderConnectionState()
     return NSProviderConnectionState;\r
 }\r
 \r
-#if (defined WITH_CLOUD)\r
-void NSSetRemoteServerAddress(char *serverAddress)\r
-{\r
-\r
-    OICStrcpy(NSRemoteServerAddress, MAX_SERVER_ADDRESS, serverAddress);\r
-}\r
-\r
-void NSDeleteRemoteServerAddress(char *serverAddress)\r
-{\r
-    NS_LOG_V(INFO_PRIVATE, "Delete cloud address: %s", serverAddress);\r
-\r
-    memset(NSRemoteServerAddress, 0, MAX_SERVER_ADDRESS);\r
-}\r
-\r
-bool NSIsRemoteServerAddress(char *serverAddress)\r
-{\r
-    NS_LOG_V(INFO_PRIVATE, "Check server address: %s", serverAddress);\r
-\r
-    if (serverAddress != NULL)\r
-    {\r
-        return strstr(NSRemoteServerAddress, serverAddress);\r
-    }\r
-\r
-    return false;\r
-}\r
-#endif\r
-\r
 void NSInitProviderInfo(const char * userInfo)\r
 {\r
     NS_LOG(DEBUG, "NSInitProviderInfo");\r
index aa14921..edf65a8 100644 (file)
@@ -46,10 +46,4 @@ void NSSetMQServerInfo(const char * serverUri, OCDevAddr * devAddr);
 NSMQServerInfo * NSGetMQServerInfo();
 #endif
 
-#if (defined WITH_CLOUD)
-void NSSetRemoteServerAddress(char *serverAddress);
-void NSDeleteRemoteServerAddress(char *serverAddress);
-bool NSIsRemoteServerAddress(char *serverAddress);
-#endif
-
 #endif /* _NS_PROVIDER_SYSTEM__H_ */
index 3057dda..4cf1a08 100644 (file)
@@ -156,13 +156,6 @@ NSResult NSSendTopicUpdation()
             {
                 obArray[obCount++] = subData->messageObId;
             }
-
-#if (defined WITH_CLOUD)
-            if (subData->remote_messageObId != 0)
-            {
-                obArray[obCount++] = subData->remote_messageObId;
-            }
-#endif
         }
 
         it = it->next;