Add example for related Topic.
authorjaesick.shin <jaesick.shin@samsung.com>
Wed, 17 Aug 2016 06:56:23 +0000 (15:56 +0900)
committerUze Choi <uzchoi@samsung.com>
Wed, 17 Aug 2016 09:35:18 +0000 (09:35 +0000)
Add example for related Topic API.

Change-Id: Ibf87b8b6b58e81a7b3e7a582116d60cfd5446b00
Signed-off-by: jaesick.shin <jaesick.shin@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/10533
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
service/notification/examples/linux/notificationprovider.c

index ab2427c..00487ce 100644 (file)
@@ -36,6 +36,7 @@
 // Input the following values to publish resource to cloud\r
 char REMOTE_SERVER_ADDRESS[50];\r
 char REMOTE_SERVER_SESSION[50];\r
+char mainConsumer[37] = '\0';\r
 \r
 extern char *strdup(const char *s);\r
 \r
@@ -64,6 +65,11 @@ void subscribeRequestCallback(NSConsumer *consumer)
 \r
     printf("NS_APP Consumer Device ID: %s\n", consumer->consumerId);\r
 \r
+    if(mainConsumer[0] == '\0')\r
+    {\r
+        OICStrcpy(mainConsumer, 37, consumer->consumerId);\r
+    }\r
+\r
     NSAcceptSubscription(consumer, true);\r
 }\r
 \r
@@ -113,6 +119,46 @@ FILE* server_fopen(const char *path, const char *mode)
     return fopen("oic_ns_provider_db.dat", mode);\r
 }\r
 \r
+void printTopics(NSTopics * topics)\r
+{\r
+    if(!topics)\r
+    {\r
+        printf("topics is null\n");\r
+        return;\r
+    }\r
+\r
+    NSTopics * iter = topics;\r
+\r
+    while(iter)\r
+    {\r
+        printf("tName = %s, tState = %d\n", iter->topicName, (int)iter->state);\r
+        iter = iter->next;\r
+    }\r
+}\r
+\r
+void removeTopics(NSTopics * topics)\r
+{\r
+    if(!topics)\r
+    {\r
+        printf("topics is null\n");\r
+        return;\r
+    }\r
+\r
+    NSTopics * iter = topics;\r
+\r
+    while(iter)\r
+    {\r
+        NSTopics * del = iter;\r
+        if(del->topicName)\r
+        {\r
+            OICFree(del->topicName);\r
+        }\r
+        iter = iter->next;\r
+\r
+        OICFree(del);\r
+    }\r
+}\r
+\r
 int main()\r
 {\r
     int num;\r
@@ -136,15 +182,22 @@ int main()
     {\r
         char dummy;\r
 \r
-        printf("1. NSStartProvider(Accepter: Provider) \n");\r
-        printf("2. NSStartProvider(Accepter: Consumer) \n");\r
-        printf("3. NSSendNotification() \n");\r
-        printf("4. NSRead \n");\r
-        printf("5. NSStopProvider() \n");\r
-\r
-        printf("11. NSCloudLogin \n");\r
-        printf("12. NSCloudLogout \n");\r
+        printf("==============================================\n");\r
+        printf("1.  NSStartProvider(Accepter: Provider) \n");\r
+        printf("2.  NSStartProvider(Accepter: Consumer) \n");\r
+        printf("3.  NSSendNotification() \n");\r
+        printf("4.  NSRead() \n");\r
+        printf("5.  NSProviderAddTopic(); \n");\r
+        printf("6.  NSProviderDeleteTopic(); \n");\r
+        printf("7.  NSProviderSelectTopic(); \n");\r
+        printf("8.  NSProviderUnselectTopic(); \n");\r
+        printf("9.  NSProviderGetConsumerTopics(); \n");\r
+        printf("10. NSProviderGetTopics(); \n");\r
+        printf("11. NSStopProvider() \n");\r
+        printf("12. NSCloudLogin \n");\r
+        printf("13. NSCloudLogout \n");\r
         printf("0. Exit() \n");\r
+        printf("==============================================\n");\r
 \r
         printf("input : ");\r
 \r
@@ -178,9 +231,10 @@ int main()
                 NSStartProvider(config);\r
             }\r
                 break;\r
+\r
             case 3:\r
+            {\r
                 printf("NSSendNotification()");\r
-\r
                 char title[100];\r
                 char body[100];\r
 \r
@@ -202,18 +256,58 @@ int main()
                 msg->sourceName = OICStrdup("OCF");\r
 \r
                 NSSendMessage(msg);\r
-\r
+            }\r
                 break;\r
 \r
             case 4:\r
-                printf("NSRead");\r
+                printf("NSRead\n");\r
                 break;\r
 \r
             case 5:\r
-                NSStopProvider();\r
+                printf("NSProviderAddTopic\n");\r
+                NSProviderAddTopic("OCF_TOPIC1");\r
+                NSProviderAddTopic("OCF_TOPIC2");\r
+                NSProviderAddTopic("OCF_TOPIC3");\r
+                NSProviderAddTopic("OCF_TOPIC4");\r
+                break;\r
+\r
+            case 6:\r
+                printf("NSProviderDeleteTopic\n");\r
+                NSProviderDeleteTopic("OCF_TOPIC2");\r
+                break;\r
+\r
+            case 7:\r
+                printf("NSProviderSelectTopic\n");\r
+                NSProviderSelectTopic("OCF_TOPIC1");\r
+                NSProviderSelectTopic("OCF_TOPIC2");\r
+                NSProviderSelectTopic("OCF_TOPIC3");\r
+                NSProviderSelectTopic("OCF_TOPIC4");\r
+                break;\r
+\r
+            case 8:\r
+                printf("NSProviderUnSelectTopic\n");\r
+                NSProviderUnSelectTopic("OCF_TOPIC1");\r
+                break;\r
+\r
+            case 9:\r
+                printf("NSProviderGetConsumerTopics\n");\r
+                NSTopics * topics = NSProviderGetConsumerTopics(mainConsumer);\r
+                printTopics(topics);\r
+                removeTopics(topics);\r
+                break;\r
+\r
+            case 10:\r
+                printf("NSProviderGetConsumerTopics\n");\r
+                NSTopics * topics = NSProviderGetTopics();\r
+                printTopics(topics);\r
+                removeTopics(topics);\r
                 break;\r
 \r
             case 11:\r
+                NSStopProvider();\r
+                break;\r
+\r
+            case 12:\r
                 printf("NSCloudLogin");\r
 \r
                 printf("Cloud Address: ");\r
@@ -227,7 +321,7 @@ int main()
 #endif\r
                 printf("OCCloudLogin requested");\r
                 break;\r
-            case 12:\r
+            case 13:\r
                 printf("NSCloudLogout");\r
 #ifdef WITH_CLOUD\r
                 NSCloudLogout(REMOTE_SERVER_ADDRESS, REMOTE_SERVER_SESSION, CloudLoginoutCallback);\r