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