Hold GetTopics API return until related code finishes in the other thread
[platform/upstream/iotivity.git] / service / notification / src / provider / NSProviderTopic.c
index a16efa6..f7d9940 100644 (file)
@@ -21,6 +21,7 @@
 #include "NSProviderTopic.h"\r
 #include "oic_string.h"\r
 #include "oic_malloc.h"\r
+#include <pthread.h>\r
 \r
 NSResult NSSendTopicUpdation();\r
 \r
@@ -426,6 +427,25 @@ void * NSTopicSchedule(void * ptr)
                     NSFreeOCEntityHandlerRequest((OCEntityHandlerRequest*) node->taskData);\r
                 }\r
                     break;\r
+                case TASK_GET_TOPICS:\r
+                {\r
+                    NS_LOG(DEBUG, "TASK_GET_TOPICS : ");\r
+                    NSTopicSynchronization * topicData = (NSTopicSynchronization *) node->taskData;\r
+                    NSTopicLL * topics = NSProviderGetTopicsCacheData(registeredTopicList);\r
+                    topicData->topics = topics;\r
+                    pthread_cond_signal(&topicData->condition);\r
+                }\r
+                    break;\r
+                case TAST_GET_CONSUMER_TOPICS:\r
+                {\r
+                    NS_LOG(DEBUG, "TASK_GET_CONSUMER_TOPICS : ");\r
+                    NSTopicSynchronization * topicData = (NSTopicSynchronization *) node->taskData;\r
+                    NSTopicLL * topics = NSProviderGetConsumerTopicsCacheData(registeredTopicList,\r
+                                consumerTopicList, topicData->consumerId);\r
+                    topicData->topics = topics;\r
+                    pthread_cond_signal(&topicData->condition);\r
+                }\r
+                    break;\r
                 default:\r
                     break;\r
             }\r