From e564d681a85774ddc1932e6492e72b901b99cada Mon Sep 17 00:00:00 2001 From: "jaesick.shin" Date: Tue, 30 Aug 2016 13:58:44 +0900 Subject: [PATCH] Modify logic for related topic. this patch included, 1. Modify logic for NSSendTopicList. 2-1. change NSProviderTopicListSize to NSProviderGetTopicListSize. 2-2. and move NSProviderMemoryCache to NSProviderTopic.c 3. rename Function for NSProviderRegisterTopic. Change-Id: I829435e5504b117f1f4d71453b5c9ca6ab02c511 Signed-off-by: jaesick.shin Reviewed-on: https://gerrit.iotivity.org/gerrit/11101 Reviewed-by: Uze Choi Tested-by: jenkins-iotivity --- .../examples/linux/notificationprovider.c | 8 ++-- .../src/provider/NSProviderMemoryCache.c | 23 --------- .../src/provider/NSProviderMemoryCache.h | 2 - .../src/provider/NSProviderTopic.c | 48 +++++++++++++------ 4 files changed, 37 insertions(+), 44 deletions(-) diff --git a/service/notification/examples/linux/notificationprovider.c b/service/notification/examples/linux/notificationprovider.c index 3454acb7f..cdf1f6008 100644 --- a/service/notification/examples/linux/notificationprovider.c +++ b/service/notification/examples/linux/notificationprovider.c @@ -255,10 +255,10 @@ int main() case 5: printf("NSProviderAddTopic\n"); - NSProivderRegisterTopic("OCF_TOPIC1"); - NSProivderRegisterTopic("OCF_TOPIC2"); - NSProivderRegisterTopic("OCF_TOPIC3"); - NSProivderRegisterTopic("OCF_TOPIC4"); + NSProviderRegisterTopic("OCF_TOPIC1"); + NSProviderRegisterTopic("OCF_TOPIC2"); + NSProviderRegisterTopic("OCF_TOPIC3"); + NSProviderRegisterTopic("OCF_TOPIC4"); break; case 6: diff --git a/service/notification/src/provider/NSProviderMemoryCache.c b/service/notification/src/provider/NSProviderMemoryCache.c index 712aa52be..a03b9f830 100644 --- a/service/notification/src/provider/NSProviderMemoryCache.c +++ b/service/notification/src/provider/NSProviderMemoryCache.c @@ -557,29 +557,6 @@ NSTopicLL * NSProviderGetConsumerTopicsCacheData(NSCacheList * regTopicList, return topics; } -size_t NSProviderGetListSize(NSCacheElement * firstElement) -{ - pthread_mutex_lock(&NSCacheMutex); - if(!firstElement) - { - pthread_mutex_unlock(&NSCacheMutex); - return 0; - } - - int cnt = 0; - - NSCacheElement * iter = firstElement; - - while(iter) - { - cnt++; - iter = iter->next; - } - - pthread_mutex_unlock(&NSCacheMutex); - return cnt; -} - bool NSProviderIsTopicSubScribed(NSCacheElement * conTopicList, char * cId, char * topicName) { pthread_mutex_lock(&NSCacheMutex); diff --git a/service/notification/src/provider/NSProviderMemoryCache.h b/service/notification/src/provider/NSProviderMemoryCache.h index 830d50f0a..5608870a7 100644 --- a/service/notification/src/provider/NSProviderMemoryCache.h +++ b/service/notification/src/provider/NSProviderMemoryCache.h @@ -47,8 +47,6 @@ NSTopicLL * NSProviderGetTopicsCacheData(NSCacheList * regTopicList); NSTopicLL * NSProviderGetConsumerTopicsCacheData(NSCacheList * regTopicList, NSCacheList * conTopicList, char *consumerId); -size_t NSProviderGetListSize(NSCacheElement * firstElement); - bool NSProviderIsTopicSubScribed(NSCacheElement * conTopicList, char * cId, char * topicName); NSResult NSProviderDeleteConsumerTopic(NSCacheList * conTopicList, diff --git a/service/notification/src/provider/NSProviderTopic.c b/service/notification/src/provider/NSProviderTopic.c index 015895ff5..85385500d 100644 --- a/service/notification/src/provider/NSProviderTopic.c +++ b/service/notification/src/provider/NSProviderTopic.c @@ -37,6 +37,26 @@ NSResult NSInitTopicList() return NS_OK; } +size_t NSProviderGetTopicListSize(NSTopicLL * firstElement) +{ + if(!firstElement) + { + return 0; + } + + int cnt = 0; + + NSTopicLL * iter = firstElement; + + while(iter) + { + cnt++; + iter = iter->next; + } + + return cnt; +} + NSResult NSAddTopics(const char * topicName) { NS_LOG(DEBUG, "NSWriteTopicsToStorage()"); @@ -204,18 +224,20 @@ NSResult NSSendTopicList(OCEntityHandlerRequest * entityHandlerRequest) { NS_LOG(DEBUG, "Send registered topic list"); topics = NSProviderGetTopicsCacheData(registeredTopicList); - currList = registeredTopicList->head; } else { NS_LOG(DEBUG, "Send subscribed topic list to consumer"); topics = NSProviderGetConsumerTopicsCacheData(registeredTopicList, consumerTopicList, id); - currList = consumerTopicList->head; + if(!topics) + { + topics = NSProviderGetTopicsCacheData(registeredTopicList); + } } - if(!currList) + if(!topics) { - NS_LOG(DEBUG, "currList is NULL"); + NS_LOG(DEBUG, "topicList is NULL"); return NS_ERROR; } @@ -233,10 +255,7 @@ NSResult NSSendTopicList(OCEntityHandlerRequest * entityHandlerRequest) return NS_ERROR; } - // set topics to the array of resource property - - NSCacheElement * iter = currList; - size_t dimensionSize = (size_t)NSProviderGetListSize(iter); + size_t dimensionSize = (size_t)NSProviderGetTopicListSize(topics); NS_LOG_V(DEBUG, "dimensionSize = %d", dimensionSize); @@ -249,19 +268,18 @@ NSResult NSSendTopicList(OCEntityHandlerRequest * entityHandlerRequest) sizeof(OCRepPayload *) * dimensionSize); size_t dimensions[3] = {dimensionSize, 0, 0}; + for (int i = 0; i < (int)dimensionSize; i++) { - NSTopicLL * topic = (NSTopicLL *) iter->data; - - NS_LOG_V(DEBUG, "topicName = %s", topic->topicName); - NS_LOG_V(DEBUG, "topicState = %d",(int) topic->state); + NS_LOG_V(DEBUG, "topicName = %s", topics->topicName); + NS_LOG_V(DEBUG, "topicState = %d",(int) topics->state); payloadTopicArray[i] = OCRepPayloadCreate(); - OCRepPayloadSetPropString(payloadTopicArray[i], NS_ATTRIBUTE_TOPIC_NAME, topic->topicName); + OCRepPayloadSetPropString(payloadTopicArray[i], NS_ATTRIBUTE_TOPIC_NAME, topics->topicName); OCRepPayloadSetPropInt(payloadTopicArray[i], NS_ATTRIBUTE_TOPIC_SELECTION, - (int)topic->state); + (int)topics->state); - iter = iter->next; + topics = topics->next; } OCRepPayloadSetUri(payload, NS_COLLECTION_TOPIC_URI); -- 2.34.1