if(consumerId == NULL)\r
{\r
NS_LOG(DEBUG, "All registered topic list");\r
+ //TODO: get registered topic list\r
}\r
else\r
{\r
NS_LOG_V(DEBUG, "Subscribed topic list for consumerId(%s)", consumerId);\r
+ //TODO: get subscribed topic list for consumer\r
}\r
\r
NS_LOG(DEBUG, "NSGetTopics() NS_OK");\r
}\r
\r
//TODO: update parameter\r
-NSResult NSStoreTopics(char * consumerId, NSTopic** topics)\r
+NSResult NSStoreTopics(char *consumerId, NSTopics** topics)\r
{\r
NS_LOG(DEBUG, "NSWriteTopicsToStorage()");\r
\r
- NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
- NSCacheTopicData * topicData = (NSCacheTopicData *) OICMalloc(sizeof(NSCacheTopicData));\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
+ 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
+ // TODO: print topic list\r
+ topicData->topics = topics;\r
+ NS_LOG(DEBUG, "print topic list");\r
\r
- element->data = (void*) topicData;\r
- element->next = NULL;\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
+ 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_ERROR;\r
}\r
\r
- if(topicList->consumerId != NULL)\r
+ NSStoreTopics(NULL, topicList->head);\r
+\r
+ NS_LOG(DEBUG, "NSRegisterTopicList() NS_OK");\r
+ return NS_OK;\r
+}\r
+\r
+NSResult NSSubscribeTopicList(char *consumerId, NSTopicList *topicList)\r
+{\r
+ NS_LOG(DEBUG, "NSSubscribeTopicList()");\r
+\r
+ if(!topicList)\r
+ {\r
+ NS_LOG(ERROR, "no topics");\r
+ return NS_ERROR;\r
+ }\r
+\r
+ if(!consumerId)\r
{\r
- // id should be null to register topic list\r
NS_LOG(ERROR, "invalid consumer id");\r
return NS_ERROR;\r
}\r
\r
- NSStoreTopics(topicList->consumerId, topicList->head);\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(consumerId, topicList->head);\r
\r
- NS_LOG(DEBUG, "NSRegisterTopicList() NS_OK");\r
+ NS_LOG(DEBUG, "NSSubscribeTopicList() NS_OK");\r
return NS_OK;\r
}\r
\r
{\r
NS_LOG(DEBUG, "Send registered topic list");\r
//TODO: get registered topic list\r
+ // NSGetTopics(NULL);\r
}\r
else\r
{\r
NS_LOG(DEBUG, "Send subscribed topic list to consumer");\r
//TODO: get subscribed topic list for consumer\r
+ // NSGetTopics(consumerid);\r
}\r
\r
// make response for the Get Request\r
return NS_ERROR;\r
}\r
\r
+ // set topics to the array of resource property\r
+ const int TOPIC_MAX_SIZE = 100;\r
+ int dimensions = 0;\r
+ OCRepPayload* payloadTopicArray[TOPIC_MAX_SIZE];\r
+ //TODO: use while(NSTopicList)\r
+ OCRepPayload* payloadTopic1;\r
+ OCRepPayload* payloadTopic2;\r
+\r
+ OCRepPayloadSetPropString(payloadTopic1, NS_ATTRIBUTE_TOPIC_NAME, "test topic name1");\r
+ OCRepPayloadSetPropBool(payloadTopic1, NS_ATTRIBUTE_TOPIC_SELECTION, true);\r
+\r
+ OCRepPayloadSetPropString(payloadTopic2, NS_ATTRIBUTE_TOPIC_NAME, "test topic name2");\r
+ OCRepPayloadSetPropBool(payloadTopic2, NS_ATTRIBUTE_TOPIC_SELECTION, false);\r
+\r
+ payloadTopicArray[dimensions++] = payloadTopic1;\r
+ payloadTopicArray[dimensions++] = payloadTopic2;\r
+ // end of set topics\r
+\r
OCRepPayloadSetUri(payload, NS_COLLECTION_TOPIC_URI);\r
OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_CONSUMER_ID, id);\r
// TODO: add PayLoadSet with topic list got above\r
+ OCRepPayloadSetPropObjectArray(payload, NS_ATTRIBUTE_TOPIC_LIST, (const OCRepPayload**)(payloadTopicArray), dimensions);\r
\r
response.requestHandle = entityHandlerRequest->requestHandle;\r
response.resourceHandle = entityHandlerRequest->resource;\r
break;\r
case TASK_SUBSCRIBE_TOPICS:\r
NS_LOG(DEBUG, "CASE TASK_SUBSCRIBE_TOPICS : ");\r
+ NSTopicList * topicList = (NSTopicList *) node->taskData;\r
+ NSSubscribeTopicList(topicList->consumerId, topicList);\r
+ NSSendTopicUpdationToConsumer(topicList->consumerId);\r
+ // TODO : free NSTopic\r
break;\r
case TASK_REGISTER_TOPICS:\r
NS_LOG(DEBUG, "CASE TASK_REGISTER_TOPICS : ");\r
- NSTopicList * topicList = (NSTopicList *) node->taskData;\r
- NSRegisterTopicList(topicList);\r
+ NSTopicList * registeredTopicList = (NSTopicList *) node->taskData;\r
+ NSRegisterTopicList(registeredTopicList);\r
NSSendTopicUpdation();\r
// TODO : free NSTopic\r
- // NSFreeTopicList(topicList);\r
break;\r
default:\r
break;\r