replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / notification / src / provider / NSProviderMemoryCache.c
index e805cc3..9e4dd69 100644 (file)
 #include "NSProviderMemoryCache.h"\r
 #include <string.h>\r
 \r
-NSCacheList * NSStorageCreate()\r
+#define NS_PROVIDER_DELETE_REGISTERED_TOPIC_DATA(it, topicData, newObj) \\r
+    { \\r
+        if (it) \\r
+        { \\r
+            NS_LOG(DEBUG, "already registered for topic name"); \\r
+            NSOICFree(topicData->topicName); \\r
+            NSOICFree(topicData); \\r
+            NSOICFree(newObj); \\r
+            pthread_mutex_unlock(&NSCacheMutex); \\r
+            return NS_FAIL; \\r
+        } \\r
+    }\r
+\r
+NSCacheList * NSProviderStorageCreate()\r
 {\r
     pthread_mutex_lock(&NSCacheMutex);\r
     NSCacheList * newList = (NSCacheList *) OICMalloc(sizeof(NSCacheList));\r
+\r
     if (!newList)\r
     {\r
         pthread_mutex_unlock(&NSCacheMutex);\r
@@ -39,7 +53,7 @@ NSCacheList * NSStorageCreate()
     return newList;\r
 }\r
 \r
-NSCacheElement * NSStorageRead(NSCacheList * list, const char * findId)\r
+NSCacheElement * NSProviderStorageRead(NSCacheList * list, const char * findId)\r
 {\r
     pthread_mutex_lock(&NSCacheMutex);\r
 \r
@@ -49,7 +63,7 @@ NSCacheElement * NSStorageRead(NSCacheList * list, const char * findId)
     NSCacheElement * next = NULL;\r
     NSCacheType type = list->cacheType;\r
 \r
-    NS_LOG_V(DEBUG, "Find ID - %s", findId);\r
+    NS_LOG_V(INFO_PRIVATE, "Find ID - %s", findId);\r
 \r
     while (iter)\r
     {\r
@@ -85,7 +99,7 @@ NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, char * id, bool stat
         return NS_ERROR;\r
     }\r
 \r
-    NSCacheElement * it = NSStorageRead(list, id);\r
+    NSCacheElement * it = NSProviderStorageRead(list, id);\r
 \r
     if (it)\r
     {\r
@@ -94,7 +108,7 @@ NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, char * id, bool stat
         {\r
             NS_LOG(DEBUG, "Update Data - IN");\r
 \r
-            NS_LOG_V(DEBUG, "currData_ID = %s", itData->id);\r
+            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
@@ -120,7 +134,7 @@ NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, char * id, bool stat
     return NS_ERROR;\r
 }\r
 \r
-NSResult NSStorageWrite(NSCacheList * list, NSCacheElement * newObj)\r
+NSResult NSProviderStorageWrite(NSCacheList * list, NSCacheElement * newObj)\r
 {\r
     pthread_mutex_lock(&NSCacheMutex);\r
 \r
@@ -140,7 +154,7 @@ NSResult NSStorageWrite(NSCacheList * list, NSCacheElement * newObj)
         NS_LOG(DEBUG, "Type is SUBSCRIBER");\r
 \r
         NSCacheSubData * subData = (NSCacheSubData *) newObj->data;\r
-        NSCacheElement * it = NSStorageRead(list, subData->id);\r
+        NSCacheElement * it = NSProviderStorageRead(list, subData->id);\r
 \r
         if (it)\r
         {\r
@@ -150,14 +164,14 @@ NSResult NSStorageWrite(NSCacheList * list, NSCacheElement * newObj)
             {\r
                 NS_LOG(DEBUG, "Update Data - IN");\r
 \r
-                NS_LOG_V(DEBUG, "currData_ID = %s", itData->id);\r
+                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, "subData_ID = %s", subData->id);\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
@@ -186,60 +200,40 @@ NSResult NSStorageWrite(NSCacheList * list, NSCacheElement * newObj)
                 }\r
 \r
                 NS_LOG(DEBUG, "Update Data - OUT");\r
-\r
+                NSOICFree(subData);\r
+                NSOICFree(newObj);\r
                 pthread_mutex_unlock(&NSCacheMutex);\r
                 return NS_OK;\r
             }\r
         }\r
 \r
     }\r
-    else if(type == NS_PROVIDER_CACHE_REGISTER_TOPIC)\r
+    else if (type == NS_PROVIDER_CACHE_REGISTER_TOPIC)\r
     {\r
         NS_LOG(DEBUG, "Type is REGITSTER TOPIC");\r
 \r
         NSCacheTopicData * topicData = (NSCacheTopicData *) newObj->data;\r
-        NSCacheElement * it = NSStorageRead(list, topicData->topicName);\r
+        NSCacheElement * it = NSProviderStorageRead(list, topicData->topicName);\r
 \r
-        if (it)\r
-        {\r
-            NS_LOG(DEBUG, "already registered for topic name");\r
-            OICFree(topicData->topicName);\r
-            OICFree(topicData);\r
-            pthread_mutex_unlock(&NSCacheMutex);\r
-            return NS_FAIL;\r
-        }\r
+        NS_PROVIDER_DELETE_REGISTERED_TOPIC_DATA(it, topicData, newObj);\r
     }\r
-    else if(type == NS_PROVIDER_CACHE_CONSUMER_TOPIC_NAME)\r
+    else if (type == NS_PROVIDER_CACHE_CONSUMER_TOPIC_NAME)\r
     {\r
         NS_LOG(DEBUG, "Type is REGITSTER TOPIC");\r
 \r
         NSCacheTopicSubData * topicData = (NSCacheTopicSubData *) newObj->data;\r
-        NSCacheElement * it = NSStorageRead(list, topicData->topicName);\r
+        NSCacheElement * it = NSProviderStorageRead(list, topicData->topicName);\r
 \r
-        if (it)\r
-        {\r
-            NS_LOG(DEBUG, "already registered for topic name");\r
-            OICFree(topicData->topicName);\r
-            OICFree(topicData);\r
-            pthread_mutex_unlock(&NSCacheMutex);\r
-            return NS_FAIL;\r
-        }\r
+        NS_PROVIDER_DELETE_REGISTERED_TOPIC_DATA(it, topicData, newObj);\r
     }\r
-    else if(type == NS_PROVIDER_CACHE_CONSUMER_TOPIC_CID)\r
+    else if (type == NS_PROVIDER_CACHE_CONSUMER_TOPIC_CID)\r
     {\r
         NS_LOG(DEBUG, "Type is REGITSTER TOPIC");\r
 \r
         NSCacheTopicSubData * topicData = (NSCacheTopicSubData *) newObj->data;\r
-        NSCacheElement * it = NSStorageRead(list, topicData->id);\r
+        NSCacheElement * it = NSProviderStorageRead(list, topicData->id);\r
 \r
-        if (it)\r
-        {\r
-            NS_LOG(DEBUG, "already registered for topic name");\r
-            OICFree(topicData->topicName);\r
-            OICFree(topicData);\r
-            pthread_mutex_unlock(&NSCacheMutex);\r
-            return NS_FAIL;\r
-        }\r
+        NS_PROVIDER_DELETE_REGISTERED_TOPIC_DATA(it, topicData, newObj);\r
     }\r
 \r
     if (list->head == NULL)\r
@@ -256,7 +250,7 @@ NSResult NSStorageWrite(NSCacheList * list, NSCacheElement * newObj)
     return NS_OK;\r
 }\r
 \r
-NSResult NSStorageDestroy(NSCacheList * list)\r
+NSResult NSProviderStorageDestroy(NSCacheList * list)\r
 {\r
     NSCacheElement * iter = list->head;\r
     NSCacheElement * next = NULL;\r
@@ -266,15 +260,14 @@ NSResult NSStorageDestroy(NSCacheList * list)
     {\r
         next = (NSCacheElement *) iter->next;\r
         NSProviderDeleteCacheData(type, iter->data);\r
-        OICFree(iter);\r
+        NSOICFree(iter);\r
         iter = next;\r
     }\r
 \r
-    OICFree(list);\r
+    NSOICFree(list);\r
     return NS_OK;\r
 }\r
 \r
-\r
 bool NSIsSameObId(NSCacheSubData * data, OCObservationId id)\r
 {\r
     if (id == data->messageObId || id == data->syncObId || id == data->remote_messageObId ||\r
@@ -295,13 +288,13 @@ bool NSProviderCompareIdCacheData(NSCacheType type, void * data, const char * id
         return false;\r
     }\r
 \r
-    NS_LOG_V(DEBUG, "Data(compData) = [%s]", id);\r
+    NS_LOG_V(INFO_PRIVATE, "Data(compData) = [%s]", id);\r
 \r
     if (type == NS_PROVIDER_CACHE_SUBSCRIBER)\r
     {\r
         NSCacheSubData * subData = (NSCacheSubData *) data;\r
 \r
-        NS_LOG_V(DEBUG, "Data(subData) = [%s]", subData->id);\r
+        NS_LOG_V(INFO_PRIVATE, "Data(subData) = [%s]", subData->id);\r
 \r
         if (strcmp(subData->id, id) == 0)\r
         {\r
@@ -316,7 +309,7 @@ bool NSProviderCompareIdCacheData(NSCacheType type, void * data, const char * id
     {\r
         NSCacheSubData * subData = (NSCacheSubData *) data;\r
 \r
-        NS_LOG_V(DEBUG, "Data(subData) = [%s]", subData->id);\r
+        NS_LOG_V(INFO_PRIVATE, "Data(subData) = [%s]", subData->id);\r
 \r
         OCObservationId currID = *id;\r
 \r
@@ -363,7 +356,7 @@ bool NSProviderCompareIdCacheData(NSCacheType type, void * data, const char * id
     {\r
         NSCacheTopicSubData * topicData = (NSCacheTopicSubData *) data;\r
 \r
-        NS_LOG_V(DEBUG, "Data(topicData) = [%s]", topicData->id);\r
+        NS_LOG_V(INFO_PRIVATE, "Data(topicData) = [%s]", topicData->id);\r
 \r
         if (strcmp(topicData->id, id) == 0)\r
         {\r
@@ -392,29 +385,31 @@ NSResult NSProviderDeleteCacheData(NSCacheType type, void * data)
         NSCacheSubData * subData = (NSCacheSubData *) data;\r
 \r
         (subData->id)[0] = '\0';\r
-        OICFree(subData);\r
+        NSOICFree(subData);\r
         return NS_OK;\r
     }\r
-    else if(type == NS_PROVIDER_CACHE_REGISTER_TOPIC)\r
+    else if (type == NS_PROVIDER_CACHE_REGISTER_TOPIC)\r
     {\r
 \r
         NSCacheTopicData * topicData = (NSCacheTopicData *) data;\r
         NS_LOG_V(DEBUG, "topicData->topicName = %s, topicData->state = %d", topicData->topicName,\r
                 (int)topicData->state);\r
 \r
-        OICFree(topicData->topicName);\r
+        NSOICFree(topicData->topicName);\r
+        NSOICFree(topicData);\r
     }\r
-    else if(type == NS_PROVIDER_CACHE_CONSUMER_TOPIC_NAME ||\r
+    else if (type == NS_PROVIDER_CACHE_CONSUMER_TOPIC_NAME ||\r
             type == NS_PROVIDER_CACHE_CONSUMER_TOPIC_CID)\r
     {\r
         NSCacheTopicSubData * topicData = (NSCacheTopicSubData *) data;\r
-        OICFree(topicData->topicName);\r
+        NSOICFree(topicData->topicName);\r
+        NSOICFree(topicData);\r
     }\r
 \r
     return NS_OK;\r
 }\r
 \r
-NSResult NSStorageDelete(NSCacheList * list, const char * delId)\r
+NSResult NSProviderStorageDelete(NSCacheList * list, const char * delId)\r
 {\r
     pthread_mutex_lock(&NSCacheMutex);\r
     NSCacheElement * prev = list->head;\r
@@ -422,7 +417,7 @@ NSResult NSStorageDelete(NSCacheList * list, const char * delId)
 \r
     NSCacheType type = list->cacheType;\r
 \r
-    if(!del)\r
+    if (!del)\r
     {\r
         NS_LOG(DEBUG, "list head is NULL");\r
         pthread_mutex_unlock(&NSCacheMutex);\r
@@ -440,13 +435,14 @@ NSResult NSStorageDelete(NSCacheList * list, const char * delId)
 \r
             list->head = del->next;\r
             NSProviderDeleteCacheData(type, del->data);\r
-            OICFree(del);\r
+            NSOICFree(del);\r
             pthread_mutex_unlock(&NSCacheMutex);\r
             return NS_OK;\r
         }\r
     }\r
 \r
     del = del->next;\r
+\r
     while (del)\r
     {\r
         if (NSProviderCompareIdCacheData(type, del->data, delId))\r
@@ -458,7 +454,7 @@ NSResult NSStorageDelete(NSCacheList * list, const char * delId)
 \r
             prev->next = del->next;\r
             NSProviderDeleteCacheData(type, del->data);\r
-            OICFree(del);\r
+            NSOICFree(del);\r
             pthread_mutex_unlock(&NSCacheMutex);\r
             return NS_OK;\r
         }\r
@@ -466,6 +462,7 @@ NSResult NSStorageDelete(NSCacheList * list, const char * delId)
         prev = del;\r
         del = del->next;\r
     }\r
+\r
     pthread_mutex_unlock(&NSCacheMutex);\r
     return NS_FAIL;\r
 }\r
@@ -477,7 +474,7 @@ NSTopicLL * NSProviderGetTopicsCacheData(NSCacheList * regTopicList)
 \r
     NSCacheElement * iter = regTopicList->head;\r
 \r
-    if(!iter)\r
+    if (!iter)\r
     {\r
         pthread_mutex_unlock(&NSCacheMutex);\r
         return NULL;\r
@@ -490,13 +487,19 @@ NSTopicLL * NSProviderGetTopicsCacheData(NSCacheList * regTopicList)
     while (iter)\r
     {\r
         NSCacheTopicData * curr = (NSCacheTopicData *) iter->data;\r
-\r
         newTopic = (NSTopicLL *) OICMalloc(sizeof(NSTopicLL));\r
+\r
+        if (!newTopic)\r
+        {\r
+            pthread_mutex_unlock(&NSCacheMutex);\r
+            return NULL;\r
+        }\r
+\r
         newTopic->state = curr->state;\r
         newTopic->next = NULL;\r
         newTopic->topicName = OICStrdup(curr->topicName);\r
 \r
-        if(!topics)\r
+        if (!topics)\r
         {\r
             iterTopic = topics = newTopic;\r
         }\r
@@ -523,7 +526,7 @@ NSTopicLL * NSProviderGetConsumerTopicsCacheData(NSCacheList * regTopicList,
     pthread_mutex_lock(&NSCacheMutex);\r
     NSTopicLL * topics = NSProviderGetTopicsCacheData(regTopicList);\r
 \r
-    if(!topics)\r
+    if (!topics)\r
     {\r
         pthread_mutex_unlock(&NSCacheMutex);\r
         return NULL;\r
@@ -532,23 +535,24 @@ NSTopicLL * NSProviderGetConsumerTopicsCacheData(NSCacheList * regTopicList,
     NSCacheElement * iter = conTopicList->head;\r
     conTopicList->cacheType = NS_PROVIDER_CACHE_CONSUMER_TOPIC_CID;\r
 \r
-    while(iter)\r
+    while (iter)\r
     {\r
         NSCacheTopicSubData * curr = (NSCacheTopicSubData *)iter->data;\r
 \r
-        NS_LOG_V(DEBUG, "curr->id = %s", curr->id);\r
-        NS_LOG_V(DEBUG, "curr->topicName = %s", curr->topicName);\r
-\r
-        if(curr && strcmp(curr->id, consumerId) == 0)\r
+        if (curr && strcmp(curr->id, consumerId) == 0)\r
         {\r
+            NS_LOG_V(INFO_PRIVATE, "curr->id = %s", curr->id);\r
+            NS_LOG_V(DEBUG, "curr->topicName = %s", curr->topicName);\r
             NSTopicLL * topicIter = topics;\r
-            while(topicIter)\r
+\r
+            while (topicIter)\r
             {\r
-                if(strcmp(topicIter->topicName, curr->topicName) == 0)\r
+                if (strcmp(topicIter->topicName, curr->topicName) == 0)\r
                 {\r
                     topicIter->state = NS_TOPIC_SUBSCRIBED;\r
                     break;\r
                 }\r
+\r
                 topicIter = topicIter->next;\r
             }\r
         }\r
@@ -567,22 +571,24 @@ bool NSProviderIsTopicSubScribed(NSCacheElement * conTopicList, char * cId, char
 {\r
     pthread_mutex_lock(&NSCacheMutex);\r
 \r
-    if(!conTopicList || !cId || !topicName)\r
+    if (!conTopicList || !cId || !topicName)\r
     {\r
         pthread_mutex_unlock(&NSCacheMutex);\r
         return false;\r
     }\r
 \r
     NSCacheElement * iter = conTopicList;\r
-    while(iter)\r
+\r
+    while (iter)\r
     {\r
         NSCacheTopicSubData * curr = (NSCacheTopicSubData *) iter->data;\r
 \r
-        if( (strcmp(curr->id, cId) == 0) && (strcmp(curr->topicName, topicName) == 0) )\r
+        if ( (strcmp(curr->id, cId) == 0) && (strcmp(curr->topicName, topicName) == 0) )\r
         {\r
             pthread_mutex_unlock(&NSCacheMutex);\r
             return true;\r
         }\r
+\r
         iter = iter->next;\r
     }\r
 \r
@@ -598,10 +604,10 @@ NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList,
     char * cId = topicSubData->id;\r
     char * topicName = topicSubData->topicName;\r
 \r
-    if(!conTopicList || !cId || !topicName)\r
+    if (!conTopicList || !cId || !topicName)\r
     {\r
-        return NS_ERROR;\r
         pthread_mutex_unlock(&NSCacheMutex);\r
+        return NS_ERROR;\r
     }\r
 \r
     NSCacheElement * prev = conTopicList->head;\r
@@ -609,7 +615,7 @@ NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList,
 \r
     NSCacheType type = conTopicList->cacheType;\r
 \r
-    if(!del)\r
+    if (!del)\r
     {\r
         NS_LOG(DEBUG, "list head is NULL");\r
         pthread_mutex_unlock(&NSCacheMutex);\r
@@ -617,12 +623,13 @@ NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList,
     }\r
 \r
     NSCacheTopicSubData * curr = (NSCacheTopicSubData *) del->data;\r
-    NS_LOG_V(DEBUG, "compareid = %s", cId);\r
+    NS_LOG_V(INFO_PRIVATE, "compareid = %s", cId);\r
     NS_LOG_V(DEBUG, "comparetopicName = %s", topicName);\r
-    NS_LOG_V(DEBUG, "curr->id = %s", curr->id);\r
+    NS_LOG_V(INFO_PRIVATE, "curr->id = %s", curr->id);\r
     NS_LOG_V(DEBUG, "curr->topicName = %s", curr->topicName);\r
 \r
-    if( (strncmp(curr->id, cId, NS_UUID_STRING_SIZE) == 0) && (strcmp(curr->topicName, topicName) == 0) )\r
+    if ( (strncmp(curr->id, cId, NS_UUID_STRING_SIZE) == 0) &&\r
+            (strcmp(curr->topicName, topicName) == 0) )\r
     {\r
         if (del == conTopicList->head) // first object\r
         {\r
@@ -633,7 +640,7 @@ NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList,
 \r
             conTopicList->head = del->next;\r
             NSProviderDeleteCacheData(type, del->data);\r
-            OICFree(del);\r
+            NSOICFree(del);\r
             pthread_mutex_unlock(&NSCacheMutex);\r
             return NS_OK;\r
         }\r
@@ -641,10 +648,12 @@ NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList,
 \r
     curr = NULL;\r
     del = del->next;\r
+\r
     while (del)\r
     {\r
         curr = (NSCacheTopicSubData *) del->data;\r
-        if( (strncmp(curr->id, cId, NS_UUID_STRING_SIZE) == 0) && (strcmp(curr->topicName, topicName) == 0) )\r
+        if ( (strncmp(curr->id, cId, NS_UUID_STRING_SIZE) == 0) &&\r
+                (strcmp(curr->topicName, topicName) == 0) )\r
         {\r
             if (del == conTopicList->tail) // delete object same to last object\r
             {\r
@@ -653,7 +662,7 @@ NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList,
 \r
             prev->next = del->next;\r
             NSProviderDeleteCacheData(type, del->data);\r
-            OICFree(del);\r
+            NSOICFree(del);\r
             pthread_mutex_unlock(&NSCacheMutex);\r
             return NS_OK;\r
         }\r
@@ -661,6 +670,7 @@ NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList,
         prev = del;\r
         del = del->next;\r
     }\r
+\r
     pthread_mutex_unlock(&NSCacheMutex);\r
     return NS_FAIL;\r
 }\r