add logic related Topic List.
authorjaesick.shin <jaesick.shin@samsung.com>
Thu, 11 Aug 2016 13:07:29 +0000 (22:07 +0900)
committerMadan Lanka <lanka.madan@samsung.com>
Fri, 12 Aug 2016 07:10:21 +0000 (07:10 +0000)
this patch inlcuded
delete related topic in MemoryCache.

second patch included
bug fixes for wrong define value.

Change-Id: Iea1cb4b80d88fcdc8a1a7ab506c13d51f7de9814
Signed-off-by: jaesick.shin <jaesick.shin@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/10285
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Madan Lanka <lanka.madan@samsung.com>
service/notification/src/provider/NSProviderMemoryCache.c
service/notification/src/provider/NSProviderTopic.c

index f3c1d72..1325b6e 100644 (file)
@@ -120,6 +120,54 @@ NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, char * id, bool stat
     return NS_ERROR;\r
 }\r
 \r
+NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, char * id, bool state)\r
+{\r
+    pthread_mutex_lock(&NSCacheMutex);\r
+\r
+    NS_LOG(DEBUG, "NSCacheUpdateSubScriptionState - IN");\r
+\r
+    if (id == NULL)\r
+    {\r
+        NS_LOG(DEBUG, "id is NULL");\r
+        pthread_mutex_unlock(&NSCacheMutex);\r
+        return NS_ERROR;\r
+    }\r
+\r
+    NSCacheElement * it = NSStorageRead(list, id);\r
+\r
+    if (it)\r
+    {\r
+        NSCacheSubData * itData = (NSCacheSubData *) it->data;\r
+        if (strcmp(itData->id, id) == 0)\r
+        {\r
+            NS_LOG(DEBUG, "Update Data - IN");\r
+\r
+            NS_LOG_V(DEBUG, "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
+\r
+            itData->isWhite = state;\r
+\r
+            NS_LOG(DEBUG, "Update Data - OUT");\r
+            pthread_mutex_unlock(&NSCacheMutex);\r
+            return NS_OK;\r
+        }\r
+    }\r
+    else\r
+    {\r
+        NS_LOG(DEBUG, "Not Found Data");\r
+    }\r
+\r
+    NS_LOG(DEBUG, "NSCacheUpdateSubScriptionState - OUT");\r
+    pthread_mutex_unlock(&NSCacheMutex);\r
+    return NS_ERROR;\r
+}\r
+\r
 NSResult NSStorageWrite(NSCacheList * list, NSCacheElement * newObj)\r
 {\r
     pthread_mutex_lock(&NSCacheMutex);\r
@@ -285,6 +333,21 @@ bool NSProviderCompareIdCacheData(NSCacheType type, void * data, const char * id
         NS_LOG(DEBUG, "Message Data is Not Same");\r
         return false;\r
     }\r
+    else if (type == NS_PROVIDER_CACHE_CONSUMER_TOPIC)\r
+    {\r
+        NSCacheTopicSubData * topicData = (NSCacheTopicSubData *) data;\r
+\r
+        NS_LOG_V(DEBUG, "Data(topicData) = [%s]", topicData->topicName);\r
+\r
+        if (strcmp(topicData->topicName, id) == 0)\r
+        {\r
+            NS_LOG(DEBUG, "SubData is Same");\r
+            return true;\r
+        }\r
+\r
+        NS_LOG(DEBUG, "Message Data is Not Same");\r
+        return false;\r
+    }\r
 \r
     NS_LOG(DEBUG, "NSProviderCompareIdCacheData - OUT");\r
     return false;\r
@@ -306,6 +369,16 @@ NSResult NSProviderDeleteCacheData(NSCacheType type, void * data)
 \r
         return NS_OK;\r
     }\r
+    else if(type == NS_PROVIDER_CACHE_REGISTER_TOPIC)\r
+    {\r
+        NSCacheTopicData * data = (NSCacheTopicData *) data;\r
+        OICFree(data->topicName);\r
+    }\r
+    else if(type == NS_PROVIDER_CACHE_CONSUMER_TOPIC)\r
+    {\r
+        NSCacheTopicSubData * data = (NSCacheTopicSubData *) data;\r
+        OICFree(data->topicName);\r
+    }\r
 \r
     return NS_OK;\r
 }\r
@@ -386,3 +459,53 @@ NSResult NSProviderDeleteSubDataFromObId(NSCacheList * list, OCObservationId id)
     pthread_mutex_unlock(&NSCacheMutex);\r
     return NS_OK;\r
 }\r
+\r
+NSResult NSStorageDelete(NSCacheList * list, const char * delId)\r
+{\r
+    pthread_mutex_lock(&NSCacheMutex);\r
+    NSCacheElement * prev = list->head;\r
+    NSCacheElement * del = list->head;\r
+\r
+    NSCacheType type = list->cacheType;\r
+\r
+    if (NSProviderCompareIdCacheData(type, del->data, delId))\r
+    {\r
+        if (del == list->head) // first object\r
+        {\r
+            if (del == list->tail) // first object (one object)\r
+            {\r
+                list->tail = del->next;\r
+            }\r
+\r
+            list->head = del->next;\r
+\r
+            NSProviderDeleteCacheData(type, del->data);\r
+            OICFree(del);\r
+            pthread_mutex_unlock(&NSCacheMutex);\r
+            return NS_OK;\r
+        }\r
+    }\r
+\r
+    del = del->next;\r
+    while (del)\r
+    {\r
+        if (NSProviderCompareIdCacheData(type, del->data, delId))\r
+        {\r
+            if (del == list->tail) // delete object same to last object\r
+            {\r
+                list->tail = prev;\r
+            }\r
+\r
+            prev->next = del->next;\r
+            NSProviderDeleteCacheData(type, del->data);\r
+            OICFree(del);\r
+            pthread_mutex_unlock(&NSCacheMutex);\r
+            return NS_OK;\r
+        }\r
+\r
+        prev = del;\r
+        del = del->next;\r
+    }\r
+    pthread_mutex_unlock(&NSCacheMutex);\r
+    return NS_FAIL;\r
+}\r
index 3c23067..8eed595 100644 (file)
@@ -91,7 +91,18 @@ NSResult NSAddTopics(const char * topicName)
 \r
 NSResult NSDeleteTopics(const char * topicName)\r
 {\r
-    // TO-DO\r
+    NS_LOG(DEBUG, "NSDeleteTopics()");\r
+\r
+    if(!topicName)\r
+    {\r
+        NS_LOG(ERROR, "topicName is NULL");\r
+        return NS_ERROR;\r
+    }\r
+\r
+    NSStorageDelete(registeredTopicList, topicName);\r
+    while(NSStorageDelete(consumerTopicList, topicName) != NS_FAIL);\r
+\r
+    return NS_OK;\r
 }\r
 \r
 NSResult NSSubscribeTopicList(char *consumerId, NSTopicList *topicList)\r