}\r
\r
}\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
+\r
+ if (it)\r
+ {\r
+ NS_LOG(DEBUG, "already registered for topic name");\r
+ pthread_mutex_unlock(&NSCacheMutex);\r
+ return NS_FAIL;\r
+ }\r
+ }\r
\r
if (list->head == NULL)\r
{\r
return false;\r
}\r
\r
+ NS_LOG_V(DEBUG, "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(DEBUG, "Data(compData) = [%s]", id);\r
\r
if (strcmp(subData->id, id) == 0)\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
+\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
-\r
return false;\r
}\r
\r
\r
static bool isTopicList = false;\r
\r
+NSResult NSStoreTopics(const char * topicName);\r
+NSResult NSSendTopicUpdation();\r
+\r
NSResult NSInitTopicList()\r
{\r
NS_LOG(DEBUG, "NSInitTopicList - IN");\r
return topicList;\r
}\r
\r
-//TODO: update parameter\r
-NSResult NSStoreTopics(char *consumerId, NSTopics** topics)\r
+NSResult NSStoreTopics(const char * topicName)\r
{\r
NS_LOG(DEBUG, "NSWriteTopicsToStorage()");\r
\r
- if(!consumerId)\r
- {\r
- NS_LOG(DEBUG, "Store registered topic list");\r
- //TODO: store registered topic list\r
- }\r
- else // topic selection for consumer\r
- {\r
- NS_LOG(DEBUG, "Store subscribed topic list");\r
- //TODO: store subscribed topic list for consumer\r
-\r
- //TODO: modiy caching logic\r
- NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
- NSCacheTopicData * topicData = (NSCacheTopicData *) OICMalloc(sizeof(NSCacheTopicData));\r
-\r
- OICStrcpy(topicData->consumerId, UUID_STRING_SIZE, consumerId);\r
- NS_LOG_V(DEBUG, "consumer id: %s", topicData->consumerId);\r
-\r
- // TODO: print topic list\r
- topicData->topics = topics;\r
- NS_LOG(DEBUG, "print topic list");\r
+ NSCacheTopicData * data = (NSCacheTopicData *)OICMalloc(sizeof(NSCacheTopicData));\r
+ data->topicName = topicName;\r
+ data->state = NS_TOPIC_UNSUBSCRIBED;\r
\r
- element->data = (void*) topicData;\r
- element->next = NULL;\r
-\r
- if(NSStorageWrite(consumerTopicList, element) != NS_OK)\r
- {\r
- NS_LOG(DEBUG, "fail to write cache");\r
- }\r
- }\r
-\r
- NS_LOG(DEBUG, "NSWriteTopicsToStorage() NS_OK");\r
- return NS_OK;\r
-}\r
+ NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
+ element->data = (void *) data;\r
+ element->next = NULL;\r
\r
-NSResult NSRegisterTopicList(NSTopicList *topicList)\r
-{\r
- NS_LOG(DEBUG, "NSRegisterTopicList()");\r
-\r
- if(!topicList)\r
+ if(NSStorageWrite(registeredTopicList, element) != NS_OK)\r
{\r
- NS_LOG(ERROR, "no topics");\r
- return NS_ERROR;\r
+ NS_LOG(DEBUG, "fail to write cache");\r
}\r
+ NSSendTopicUpdation();\r
\r
- OCResourceHandle rHandle = NULL;\r
- if(NSPutTopicResource(topicList, &rHandle) != NS_OK)\r
- {\r
- NS_LOG(ERROR, "Fail to put topic resource");\r
- return NS_ERROR;\r
- }\r
-\r
- NSStoreTopics(NULL, topicList->head);\r
-\r
- NS_LOG(DEBUG, "NSRegisterTopicList() NS_OK");\r
+ NS_LOG(DEBUG, "NSWriteTopicsToStorage() NS_OK");\r
return NS_OK;\r
}\r
\r
return NS_ERROR;\r
}\r
\r
- NSStoreTopics(consumerId, topicList->head);\r
+ //TODO it will change logic.\r
+ //NSStoreTopics(consumerId, topicList->head);\r
\r
NS_LOG(DEBUG, "NSSubscribeTopicList() NS_OK");\r
return NS_OK;\r
// TODO: implement\r
break;\r
case TASK_ADD_TOPIC:\r
- // TODO: modify to add single topic\r
+ {\r
NS_LOG(DEBUG, "CASE TASK_ADD_TOPIC : ");\r
- NSTopicList * registeredTopicList = (NSTopicList *) node->taskData;\r
- NSRegisterTopicList(registeredTopicList);\r
- NSSendTopicUpdation();\r
- // TODO : free NSTopic\r
+ NSStoreTopics((const char *) node->taskData);\r
+ }\r
break;\r
case TASK_DELETE_TOPIC:\r
// TODO: implement \r