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
+ id == data->remote_syncObId)\r
+ {\r
+ return true;\r
+ }\r
+\r
+ return false;\r
+}\r
+\r
bool NSProviderCompareIdCacheData(NSCacheType type, void * data, const char * id)\r
{\r
NS_LOG(DEBUG, "NSProviderCompareIdCacheData - IN");\r
NS_LOG(DEBUG, "Message Data is Not Same");\r
return false;\r
}\r
+ else if (type == NS_PROVIDER_CACHE_SUBSCRIBER_OBSERVE_ID)\r
+ {\r
+ NSCacheSubData * subData = (NSCacheSubData *) data;\r
+\r
+ NS_LOG_V(DEBUG, "Data(subData) = [%s]", subData->id);\r
+\r
+ OCObservationId currID = *id;\r
+\r
+ if (NSIsSameObId(subData, currID))\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
else if (type == NS_PROVIDER_CACHE_REGISTER_TOPIC)\r
{\r
NSCacheTopicData * topicData = (NSCacheTopicData *) data;\r
return NS_ERROR;\r
}\r
\r
- if (type == NS_PROVIDER_CACHE_SUBSCRIBER)\r
+ if (type == NS_PROVIDER_CACHE_SUBSCRIBER || type == NS_PROVIDER_CACHE_SUBSCRIBER_OBSERVE_ID)\r
{\r
NSCacheSubData * subData = (NSCacheSubData *) data;\r
\r
return NS_OK;\r
}\r
\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
-}\r
-\r
-NSResult NSProviderDeleteSubDataFromObId(NSCacheList * list, OCObservationId id)\r
-{\r
- if(!list || !list->head)\r
- {\r
- NS_LOG(INFO, "list is NULL");\r
- return NS_FAIL;\r
- }\r
-\r
- pthread_mutex_lock(&NSCacheMutex);\r
- NSCacheElement * prev = list->head;\r
- NSCacheElement * del = list->head;\r
-\r
- NSCacheType type = list->cacheType;\r
-\r
- bool isDelete = true;\r
-\r
- while(isDelete)\r
- {\r
- NSCacheSubData * curr = (NSCacheSubData *)del->data;\r
-\r
- isDelete = false;\r
-\r
- if (NSIsSameObId(curr, id))\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
- isDelete = true;\r
- }\r
- }\r
- else\r
- {\r
- del = del->next;\r
- while (del)\r
- {\r
- if (NSIsSameObId(curr, id))\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
- isDelete = true;\r
- break;\r
- }\r
-\r
- prev = del;\r
- del = del->next;\r
- }\r
- }\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