From 7c574a4e5dd1c0f986fe3df26eb11ff9f82ec77c Mon Sep 17 00:00:00 2001 From: "ch79.cho" Date: Thu, 11 Aug 2016 17:10:55 +0900 Subject: [PATCH] Update topic APIs The APIs for topic are updated. And the name of task attributes are upgraded regarding to the APIs. Change-Id: Ia570afc768a9466019ac08013c817fa17cbe964a Signed-off-by: ch79.cho Reviewed-on: https://gerrit.iotivity.org/gerrit/10259 Tested-by: jenkins-iotivity Reviewed-by: Madan Lanka --- service/notification/include/NSProviderInterface.h | 48 ++++---------- service/notification/src/common/NSConstants.h | 6 +- .../src/provider/NSProviderInterface.c | 75 ++++++++++++++++------ .../notification/src/provider/NSProviderListener.c | 2 +- .../notification/src/provider/NSProviderTopic.c | 16 +++-- 5 files changed, 87 insertions(+), 60 deletions(-) diff --git a/service/notification/include/NSProviderInterface.h b/service/notification/include/NSProviderInterface.h index 8c6cc1d..56ec204 100644 --- a/service/notification/include/NSProviderInterface.h +++ b/service/notification/include/NSProviderInterface.h @@ -133,69 +133,47 @@ NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type); NSMessage * NSCreateMessage(); /** - * Create empty topic list which is required to set by following APIs - * @return ::NSTopicList - */ -NSTopicList * NSProviderCreateTopicList(); - -/** - * Add topic to topic list which is able to be created - * by NSProviderCreateTopicList function - * @param[out] topicList Topic list added with topic name + * Add topic to topic list which is located in provider service storage * @param[in] topicName Topic name to add * @return ::NS_OK or result code of NSResult */ -NSResult NSProviderAddTopic(NSTopicList** topicList, char* topicName); +NSResult NSProviderAddTopic(char* topicName); /** * Delete topic from topic list - * @param[out] topicList Topic list deleted with topic name * @param[in] topicName Topic name to delete * @return ::NS_OK or result code of NSResult */ -NSResult NSProviderDeleteTopic(NSTopicList** topicList, char* topicName); +NSResult NSProviderDeleteTopic(char* topicName); /** - * Select a topic for consumer - * @param[out] topicList Topic list with selected and unselected topics for consumer + * Select a topic name for a consumer * @param[in] consumerId consumer id for which the user on provider selects a topic * @param[in] topicName Topic name to select * @return ::NS_OK or result code of NSResult */ -NSResult NSProviderSelectTopic(NSTopicList** topicList, char* consumerId, char* topicName); +NSResult NSProviderSelectTopic(char* consumerId, char* topicName); /** * Unselect a topic from the topic list for consumer - * @param[out] topicList Topic list with selected and unselected topics for consumer * @param[in] consumerId consumer id for which the user on provider unselects a topic * @param[in] topicName Topic name to unselect * @return ::NS_OK or result code of NSResult */ -NSResult NSProviderUnselectTopic(NSTopicList** topicList, char* consumerId, char* topicName); - -/** - * Request all the topics which has already registered by user - * @param[in] consumerid the id of consumer which subscribes topics - * if NULL, all the registered topic list is returned - * @return :: list of NSTopic - */ -NSTopicList * NSProviderGetTopics(char *consumerId); +NSResult NSProviderUnselectTopic(char* consumerId, char* topicName); /** - * Request to register topics to provide to consumers - * @param[in] topicList List of NSTopic - * the consumerId of NSTopicList struct shoud be set NULL - * @return ::NS_OK or result code of NSResult + * Request topic list with selection state for the consumer + * @param[in] consumerid the id of consumer which topic list is subscribed for + * @return :: Topic list */ -NSResult NSProviderRegisterTopics(NSTopicList *topicList); +NSTopics * NSProviderGetConsumerTopics(char *consumerId); /** - * Set recommended topics for a consumer - * @param[in] topicList List of NSTopic recommended by provider - * the consumerId of NSTopicList struct should be set consumerId - * @return ::NS_OK or result code of NSResult + * Request topics list already registered by provider user + * @return :: Topic list */ -NSResult NSProviderRecommendTopics(char* consumerId, NSTopicList *topicList); +NSTopics * NSProviderGetTopics(); #ifdef __cplusplus } diff --git a/service/notification/src/common/NSConstants.h b/service/notification/src/common/NSConstants.h index 88505c1..9347250 100644 --- a/service/notification/src/common/NSConstants.h +++ b/service/notification/src/common/NSConstants.h @@ -241,8 +241,10 @@ typedef enum eTaskType TASK_CB_SYNC = 10001, TASK_SEND_TOPICS = 11000, - TASK_SUBSCRIBE_TOPICS = 11001, - TASK_REGISTER_TOPICS = 11002, + TASK_ADD_TOPIC = 11001, + TASK_DELETE_TOPIC = 11002, + TASK_SUBSCRIBE_TOPIC = 11003, + TASK_UNSUBSCRIBE_TOPIC = 11004 } NSTaskType; diff --git a/service/notification/src/provider/NSProviderInterface.c b/service/notification/src/provider/NSProviderInterface.c index 80abe8a..785a51f 100644 --- a/service/notification/src/provider/NSProviderInterface.c +++ b/service/notification/src/provider/NSProviderInterface.c @@ -240,52 +240,91 @@ NSMessage * NSCreateMessage() return msg; } -NSTopicList * NSProviderGetTopics(char *consumerId) +NSTopics * NSProviderGetConsumerTopics(char *consumerId) { - NS_LOG(DEBUG, "NSProviderGetTopics - IN"); + NS_LOG(DEBUG, "NSProviderGetConsumerTopics - IN"); pthread_mutex_lock(&nsInitMutex); - if(consumerId == NULL) - { - NS_LOG(DEBUG, "Get all the topics registered by user"); - } + //TODO implement get subscribed topics for consumer + + pthread_mutex_unlock(&nsInitMutex); + NS_LOG(DEBUG, "NSProviderGetConsumerTopics - OUT"); + + return NULL; +} + +NSTopics * NSProviderGetTopics() +{ + NS_LOG(DEBUG, "NSProviderGetTopics - IN"); + pthread_mutex_lock(&nsInitMutex); - NSTopicList * topicList = NSInitializeTopicList(); - //TODO: copy topic list + //TODO implement get registered topics for consumer pthread_mutex_unlock(&nsInitMutex); NS_LOG(DEBUG, "NSProviderGetTopics - OUT"); - return topicList; + return NULL; } -NSResult NSProviderRegisterTopics(NSTopicList *topicList) +NSResult NSProviderAddTopic(char *topicName) { - NS_LOG(DEBUG, "NSProviderSetTopics - IN"); + NS_LOG(DEBUG, "NSProviderAddTopics - IN"); pthread_mutex_lock(&nsInitMutex); - NSPushQueue(TOPIC_SCHEDULER, TASK_REGISTER_TOPICS, consumerTopicList); + NSPushQueue(TOPIC_SCHEDULER, TASK_ADD_TOPIC, topicName); pthread_mutex_unlock(&nsInitMutex); - NS_LOG(DEBUG, "NSProviderSetTopics - OUT"); + NS_LOG(DEBUG, "NSProviderAddTopics - OUT"); return NS_OK; } -NSResult NSProviderRecommendTopics(char* consumerId, NSTopicList *topicList) +NSResult NSProviderDeleteTopic(char *topicName) { - NS_LOG(DEBUG, "NSProviderRecommendTopics - IN"); + NS_LOG(DEBUG, "NSProviderDeleteTopics - IN"); pthread_mutex_lock(&nsInitMutex); - if(consumerId == NULL) + NSPushQueue(TOPIC_SCHEDULER, TASK_DELETE_TOPIC, topicName); + + pthread_mutex_unlock(&nsInitMutex); + NS_LOG(DEBUG, "NSProviderDeleteTopics - OUT"); + return NS_OK; +} + +NSResult NSProviderSelectTopic(char *consumerId, char *topicName) +{ + NS_LOG(DEBUG, "NSProviderSelectTopics - IN"); + pthread_mutex_lock(&nsInitMutex); + + if(!consumerId) { NS_LOG(DEBUG, "consumer id should be set for topic subscription"); return NS_FAIL; } - NSPushQueue(TOPIC_SCHEDULER, TASK_SUBSCRIBE_TOPICS, topicList); + //TODO: add consumerId to task struct + NSPushQueue(TOPIC_SCHEDULER, TASK_SUBSCRIBE_TOPIC, topicName); + + pthread_mutex_unlock(&nsInitMutex); + NS_LOG(DEBUG, "NSProviderSelectTopics - OUT"); + return NS_OK; +} + +NSResult NSProviderUnselectTopic(char *consumerId, char *topicName) +{ + NS_LOG(DEBUG, "NSProviderUnselectTopics - IN"); + pthread_mutex_lock(&nsInitMutex); + + if(!consumerId) + { + NS_LOG(DEBUG, "consumer id should be set for topic subscription"); + return NS_FAIL; + } + + //TODO: add consumerId to task struct + NSPushQueue(TOPIC_SCHEDULER, TASK_UNSUBSCRIBE_TOPIC, topicName); pthread_mutex_unlock(&nsInitMutex); - NS_LOG(DEBUG, "NSProviderRecommendTopics - OUT"); + NS_LOG(DEBUG, "NSProviderUnselectTopics - OUT"); return NS_OK; } diff --git a/service/notification/src/provider/NSProviderListener.c b/service/notification/src/provider/NSProviderListener.c index 7f0af95..ccc76b4 100644 --- a/service/notification/src/provider/NSProviderListener.c +++ b/service/notification/src/provider/NSProviderListener.c @@ -208,7 +208,7 @@ OCEntityHandlerResult NSEntityHandlerTopicCb(OCEntityHandlerFlag flag, // Send topic notice message(id = TOPIC) to the consumer // which requests to post. - NSPushQueue(TOPIC_SCHEDULER, TASK_SUBSCRIBE_TOPICS, + NSPushQueue(TOPIC_SCHEDULER, TASK_SUBSCRIBE_TOPIC, NSCopyOCEntityHandlerRequest(entityHandlerRequest)); ehResult = OC_EH_OK; diff --git a/service/notification/src/provider/NSProviderTopic.c b/service/notification/src/provider/NSProviderTopic.c index 8c350a8..f30df90 100644 --- a/service/notification/src/provider/NSProviderTopic.c +++ b/service/notification/src/provider/NSProviderTopic.c @@ -377,20 +377,28 @@ void * NSTopicSchedule(void * ptr) NS_LOG(DEBUG, "CASE TASK_SEND_TOPICS : "); NSSendTopicList((OCEntityHandlerRequest*) node->taskData); break; - case TASK_SUBSCRIBE_TOPICS: - NS_LOG(DEBUG, "CASE TASK_SUBSCRIBE_TOPICS : "); + case TASK_SUBSCRIBE_TOPIC: + //TODO: modify subscription with single topic + NS_LOG(DEBUG, "CASE TASK_SUBSCRIBE_TOPIC : "); NSTopicList * topicList = (NSTopicList *) node->taskData; NSSubscribeTopicList(topicList->consumerId, topicList); NSSendTopicUpdationToConsumer(topicList->consumerId); // TODO : free NSTopic break; - case TASK_REGISTER_TOPICS: - NS_LOG(DEBUG, "CASE TASK_REGISTER_TOPICS : "); + case TASK_UNSUBSCRIBE_TOPIC: + // TODO: implement + break; + case TASK_ADD_TOPIC: + // TODO: modify to add single topic + NS_LOG(DEBUG, "CASE TASK_ADD_TOPIC : "); NSTopicList * registeredTopicList = (NSTopicList *) node->taskData; NSRegisterTopicList(registeredTopicList); NSSendTopicUpdation(); // TODO : free NSTopic break; + case TASK_DELETE_TOPIC: + // TODO: implement + break; default: break; } -- 2.7.4