Updated NS sample App to allow/deny consumer subscription.
authorabitha.s <abitha.s@samsung.com>
Wed, 19 Oct 2016 13:49:46 +0000 (19:19 +0530)
committerUze Choi <uzchoi@samsung.com>
Thu, 20 Oct 2016 00:27:16 +0000 (00:27 +0000)
Change-Id: Icdcc0b71fb865fbbb5dd472045e71cef2689d2c6
Signed-off-by: abitha.s <abitha.s@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13455
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/notification/cpp-wrapper/examples/linux/notificationserviceconsumer.cpp
service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp

index d6fac69..82bd789 100755 (executable)
@@ -214,7 +214,7 @@ int main(void)
                     std::cout << "2. Send Delete Sync" << std::endl;\r
                     int syn = 0;\r
                     while(!(std::cin >> syn)){\r
-                        cout << "Bad value!";\r
+                        std::cout << "Bad value!" <<std::endl;;\r
                         std::cin.clear();\r
                         std::cin.ignore(numeric_limits<streamsize>::max(), '\n');\r
                     }\r
index 35fae95..f5b9de8 100755 (executable)
@@ -35,7 +35,7 @@
 #define TAG "NotiProviderWrapperExample"\r
 using namespace std;\r
 using namespace OIC::Service;\r
-std::string mainConsumer;\r
+std::vector<std::string> discoveredConsumers;\r
 uint64_t mainMessageId = 0;\r
 \r
 extern char *strdup(const char *s);\r
@@ -65,10 +65,7 @@ void subscribeRequestCallback(OIC::Service::NSConsumer *consumer)
     std::cout << "consumer requested to subscribe" << std::endl;\r
 \r
     std::cout << "Consumer Device ID: " << consumer->getConsumerId() << std::endl;\r
-    if (mainConsumer.empty())\r
-    {\r
-        mainConsumer = consumer->getConsumerId();\r
-    }\r
+    discoveredConsumers.push_back(consumer->getConsumerId());\r
     consumer->acceptSubscription(true);\r
 }\r
 \r
@@ -80,6 +77,30 @@ void syncCallback(OIC::Service::NSSyncInfo *sync)
     std::cout << "Sync State: " << (int) sync->getState() << std::endl;\r
 }\r
 \r
+OIC::Service::NSConsumer *printAvailableConsumers()\r
+{\r
+    std::cout << "Choose the Consumer ID for operation" << std::endl;\r
+    int pos = 1;\r
+    unsigned int option = 0;\r
+    for(auto it: discoveredConsumers)\r
+    {\r
+        std::cout << pos << ". " << it <<std::endl;\r
+        pos++;\r
+    }\r
+    while(!(std::cin >> option)){\r
+        std::cout << "Bad value!" <<std::endl;;\r
+        std::cin.clear();\r
+        std::cin.ignore(numeric_limits<streamsize>::max(), '\n');\r
+    }\r
+    option--;\r
+    if (option > discoveredConsumers.size())\r
+        return NULL;\r
+    std::string consumerId = discoveredConsumers[option];\r
+    OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(\r
+                                            consumerId);\r
+    return consumer;\r
+}\r
+\r
 int main()\r
 {\r
     int num = 0;\r
@@ -149,8 +170,7 @@ int main()
             case 3:\r
                 {\r
                     std::cout << "Allow Subscription" << std::endl;\r
-                    OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(\r
-                                                            mainConsumer);\r
+                    OIC::Service::NSConsumer *consumer = printAvailableConsumers();\r
                     if (consumer != nullptr)\r
                     {\r
                         std::cout << "ALLOW" << std::endl;\r
@@ -161,8 +181,7 @@ int main()
             case 4:\r
                 {\r
                     std::cout << "Deny Subscription" << std::endl;\r
-                    OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(\r
-                                                            mainConsumer);\r
+                    OIC::Service::NSConsumer *consumer = printAvailableConsumers();\r
                     if (consumer != nullptr)\r
                     {\r
                         std::cout << "DENY" << std::endl;\r
@@ -237,7 +256,7 @@ int main()
                     std::cout << "2. Send Delete Sync" << std::endl;\r
                     int syn = 0;\r
                     while(!(std::cin >> syn)){\r
-                        cout << "Bad value!";\r
+                        std::cout << "Bad value!" <<std::endl;;\r
                         std::cin.clear();\r
                         std::cin.ignore(numeric_limits<streamsize>::max(), '\n');\r
                     }\r
@@ -286,7 +305,7 @@ int main()
             case 9:\r
                 {\r
                     std::cout <<  "SetTopic" << std::endl;\r
-                    OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(mainConsumer);\r
+                    OIC::Service::NSConsumer *consumer = printAvailableConsumers();\r
                     if (consumer != nullptr)\r
                     {\r
                         consumer->setTopic("OCF_TOPIC1");\r
@@ -299,7 +318,7 @@ int main()
             case 10:\r
                 {\r
                     std::cout <<  "UnsetTopic" << std::endl;\r
-                    OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(mainConsumer);\r
+                    OIC::Service::NSConsumer *consumer = printAvailableConsumers();\r
                     if (consumer != nullptr)\r
                     {\r
                         consumer->unsetTopic("OCF_TOPIC1");\r
@@ -312,7 +331,7 @@ int main()
             case 11:\r
                 {\r
                     std::cout <<  "GetConsumerTopicList" << std::endl;\r
-                    OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(mainConsumer);\r
+                    OIC::Service::NSConsumer *consumer = printAvailableConsumers();\r
                     if (consumer != nullptr)\r
                     {\r
                         auto nsTopics = consumer->getConsumerTopicList();\r