*/\r
NSMessage * NSCreateMessage();\r
\r
+/**\r
+ * Request all the topics which has already registered by user\r
+ * @param[in] consumerid the id of consumer which subscribes topics\r
+ * if NULL, all the registered topic list is returned\r
+ * @return :: list of NSTopic\r
+ */\r
+NSTopicList * NSProviderGetTopics(char *consumerId);\r
+\r
+/**\r
+ * Request to register topics to provide to consumers\r
+ * @param[in] topicList List of NSTopic\r
+ * the consumerId of NSTopicList struct shoud be set NULL\r
+ * @return ::NS_OK or result code of NSResult\r
+ */\r
+NSResult NSProviderSetTopics(NSTopicList *topicList);\r
+\r
+/**\r
+ * Set recommended topics for a consumer\r
+ * @param[in] topicList List of NSTopic recommended by provider\r
+ * the consumerId of NSTopicList struct should be set consumerId\r
+ * @return ::NS_OK or result code of NSResult\r
+ */\r
+NSResult NSProviderRecommendTopics(NSTopicList *topicList);\r
+\r
+\r
#ifdef __cplusplus\r
}\r
#endif // __cplusplus\r
TASK_CB_SYNC = 10001,
TASK_SEND_TOPICS = 11000,
- TASK_SELECT_TOPICS = 11001,
- TASK_SET_TOPICS = 11002,
+ TASK_SUBSCRIBE_TOPICS = 11001,
+ TASK_REGISTER_TOPICS = 11002,
} NSTaskType;
return msg;
}
+
+NSTopicList * NSInitializeTopicList()
+{
+ NSTopicList * topicList = (NSTopicList *)OICMalloc(sizeof(NSTopicList));
+
+ if(!topicList)
+ {
+ NS_LOG(ERROR, "topicList is NULL");
+ return NULL;
+ }
+
+ (topicList->consumerId)[0] = '\0';
+ topicList->topics = NULL;
+
+ return topicList;
+}
+
NSResult NSFreeConsumer(NSConsumer *);\r
NSConsumer * NSDuplicateConsumer(NSConsumer *);\r
\r
+NSTopicList * NSInitializeTopicList();\r
+\r
void NSDuplicateSetPropertyString(OCRepPayload **, const char *, const char *);\r
void NSDuplicateSetPropertyInt(OCRepPayload ** msgPayload, const char * name, int64_t value);\r
NSResult NSGenerateUUIDStr(char uuidStr[UUID_STRING_SIZE]);\r
#include "NSProviderCallbackResponse.h"\r
#include "NSStorageAdapter.h"\r
#include "NSProviderMemoryCache.h"\r
+#include "NSProviderTopic.h"\r
#include "oic_malloc.h"\r
#include "oic_string.h"\r
#include "cautilinterface.h"\r
pthread_mutex_lock(&nsInitMutex);\r
\r
NSConsumer * newConsumer = NSDuplicateConsumer(consumer);\r
-\r
if(accepted)\r
{\r
NS_LOG(DEBUG, "accepted is true - ALLOW");\r
NS_LOG(DEBUG, "NSCreateMessage - OUT");\r
return msg;\r
}\r
+\r
+NSTopicList * NSProviderGetTopics(char *consumerId)\r
+{\r
+ NS_LOG(DEBUG, "NSProviderGetTopics - IN");\r
+ pthread_mutex_lock(&nsInitMutex);\r
+\r
+ if(consumerId == NULL)\r
+ {\r
+ NS_LOG(DEBUG, "Get all the topics registered by user");\r
+ }\r
+\r
+ NSTopicList * topicList = NSInitializeTopicList();\r
+ OICStrcpy(topicList->consumerId, UUID_STRING_SIZE, consumerId);\r
+ // OICStrcpy(topicList->topics, sizeof(NSTopic), NSGetTopics(consumerId));\r
+\r
+ pthread_mutex_unlock(&nsInitMutex);\r
+ NS_LOG(DEBUG, "NSProviderGetTopics - OUT");\r
+\r
+ return topicList;\r
+}\r
+\r
+NSResult NSProviderSetTopics(NSTopicList *topicList)\r
+{\r
+ NS_LOG(DEBUG, "NSProviderSetTopics - IN");\r
+ pthread_mutex_lock(&nsInitMutex);\r
+\r
+ if(topicList->consumerId != NULL)\r
+ {\r
+ NS_LOG(DEBUG, "consumer id should be set by NULL to register topics");\r
+ return NS_FAIL;\r
+ }\r
+\r
+ NSPushQueue(TOPIC_SCHEDULER, TASK_REGISTER_TOPICS, topicList);\r
+\r
+ pthread_mutex_unlock(&nsInitMutex);\r
+ NS_LOG(DEBUG, "NSProviderSetTopics - OUT");\r
+ \r
+ return NS_OK;\r
+}\r
+\r
+NSResult NSProviderRecommendTopics(NSTopicList *topicList)\r
+{\r
+ NS_LOG(DEBUG, "NSProviderRecommendTopics - IN");\r
+ pthread_mutex_lock(&nsInitMutex);\r
+\r
+ if(topicList->consumerId == NULL)\r
+ {\r
+ NS_LOG(DEBUG, "consumer id should be set for topic subscription");\r
+ return NS_FAIL;\r
+ }\r
+\r
+ NSPushQueue(TOPIC_SCHEDULER, TASK_SUBSCRIBE_TOPICS, topicList);\r
+\r
+ pthread_mutex_unlock(&nsInitMutex);\r
+ NS_LOG(DEBUG, "NSProviderRecommendTopics - OUT");\r
+ return NS_OK;\r
+}\r
+\r
NS_LOG(DEBUG, "NSEntityHandlerTopicCb - OC_REST_POST");\r
\r
// Send topic updated message(id=TOPIC) to the consumer who request to post.\r
- NSPushQueue(TOPIC_SCHEDULER, TASK_SELECT_TOPICS,\r
+ NSPushQueue(TOPIC_SCHEDULER, TASK_SUBSCRIBE_TOPICS,\r
NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
\r
ehResult = OC_EH_OK;\r
--- /dev/null
+//******************************************************************\r
+//\r
+// Copyright 2016 Samsung Electronics All Rights Reserved.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+// http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+#ifndef _NS_PROVIDER_TOPIC_H_\r
+#define _NS_PROVIDER_TOPIC_H_\r
+\r
+#include "NSCommon.h"\r
+#include "NSStructs.h"\r
+#include "NSProviderScheduler.h"\r
+#include "NSProviderResource.h"\r
+\r
+NSTopicList * NSGetTopics(char *consumerId);\r
+\r
+#endif /* _NS_PROVIDER_TOPIC_H_ */\r