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
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
\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
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