Create topic module running with scheduler
[platform/upstream/iotivity.git] / service / notification / src / provider / NSProviderTopic.c
1 //******************************************************************\r
2 //\r
3 // Copyright 2016 Samsung Electronics All Rights Reserved.\r
4 //\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
6 //\r
7 // Licensed under the Apache License, Version 2.0 (the "License");\r
8 // you may not use this file except in compliance with the License.\r
9 // You may obtain a copy of the License at\r
10 //\r
11 //      http://www.apache.org/licenses/LICENSE-2.0\r
12 //\r
13 // Unless required by applicable law or agreed to in writing, software\r
14 // distributed under the License is distributed on an "AS IS" BASIS,\r
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16 // See the License for the specific language governing permissions and\r
17 // limitations under the License.\r
18 //\r
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
20 \r
21 #include "NSProviderTopic.h"\r
22 \r
23 NSTopicList * NSGetTopics(char *consumerId)\r
24 {\r
25     NS_LOG(DEBUG, "NSGetTopics()");\r
26 \r
27     NSTopicList  * topicList;\r
28 \r
29     if(consumerId == NULL)\r
30     {\r
31         NS_LOG(DEBUG, "All registered topic list");\r
32     }\r
33     else\r
34     {\r
35         NS_LOG_V(DEBUG, "Subscribed topic list for consumerId(%s)", consumerId);\r
36     }\r
37 \r
38     NS_LOG(DEBUG, "NSGetTopics() NS_OK");\r
39     return topicList;\r
40 }\r
41 \r
42 void * NSTopicSchedule(void * ptr)\r
43 {\r
44     if (ptr == NULL)\r
45     {\r
46         NS_LOG(DEBUG, "Create NSTopicSchedule");\r
47     }\r
48 \r
49     while (NSIsRunning[TOPIC_SCHEDULER])\r
50     {\r
51         sem_wait(&NSSemaphore[TOPIC_SCHEDULER]);\r
52         pthread_mutex_lock(&NSMutex[TOPIC_SCHEDULER]);\r
53 \r
54         if (NSHeadMsg[TOPIC_SCHEDULER] != NULL)\r
55         {\r
56             NSTask *node = NSHeadMsg[TOPIC_SCHEDULER];\r
57             NSHeadMsg[TOPIC_SCHEDULER] = node->nextTask;\r
58 \r
59             switch (node->taskType)\r
60             {\r
61                 case TASK_SEND_TOPICS:\r
62                     NS_LOG(DEBUG, "CASE TASK_SEND_TOPICS : ");\r
63                     break;\r
64                 case TASK_SUBSCRIBE_TOPICS:\r
65                     NS_LOG(DEBUG, "CASE TASK_SUBSCRIBE_TOPICS : ");\r
66                     break;\r
67                 case TASK_REGISTER_TOPICS:\r
68                     NS_LOG(DEBUG, "CASE TASK_REGISTER_TOPICS : ");\r
69                     break;\r
70                 default:\r
71                     break;\r
72             }\r
73 \r
74             OICFree(node);\r
75         }\r
76 \r
77         pthread_mutex_unlock(&NSMutex[TOPIC_SCHEDULER]);\r
78     }\r
79 \r
80     NS_LOG(DEBUG, "Destroy NSTopicSchedule");\r
81     return NULL;\r
82 }\r