1. Added sendMessage without Topics in sample application
authorAbitha Shankar <abitha.s@samsung.com>
Tue, 6 Sep 2016 08:48:57 +0000 (14:18 +0530)
committerMadan Lanka <lanka.madan@samsung.com>
Wed, 7 Sep 2016 06:55:57 +0000 (06:55 +0000)
2. Removed Discovered state from ProviderState
3. Added null checks

Change-Id: I23713dae5a610df37543776c1892927b3377a5fe
Signed-off-by: Abitha Shankar <abitha.s@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/11419
Reviewed-by: jaesick shin <jaesick.shin@samsung.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Madan Lanka <lanka.madan@samsung.com>
service/notification/cpp-wrapper/common/NSMessage.cpp
service/notification/cpp-wrapper/common/NSTopicsList.cpp
service/notification/cpp-wrapper/common/NSUtils.h
service/notification/cpp-wrapper/consumer/inc/NSProvider.h
service/notification/cpp-wrapper/consumer/src/NSConsumerService.cpp
service/notification/cpp-wrapper/consumer/src/NSProvider.cpp
service/notification/cpp-wrapper/examples/linux/notificationserviceconsumer.cpp
service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp

index 675a01c..2f58fc4 100755 (executable)
@@ -86,21 +86,21 @@ namespace OIC
 \r
         NSMessage &NSMessage::operator=(const NSMessage &msg)\r
         {\r
-            m_messageId = msg.getMessageId();\r
-            m_providerId = msg.getProviderId();\r
+            this->m_messageId = msg.getMessageId();\r
+            this->m_providerId = msg.getProviderId();\r
 \r
-            m_type = msg.getType();\r
-            m_time = msg.getTime();\r
-            m_ttl = msg.getTTL();\r
-            m_title = msg.getTitle();\r
-            m_contentText = msg.getContentText();\r
-            m_sourceName = msg.getSourceName();\r
+            this->m_type = msg.getType();\r
+            this->m_time = msg.getTime();\r
+            this->m_ttl = msg.getTTL();\r
+            this->m_title = msg.getTitle();\r
+            this->m_contentText = msg.getContentText();\r
+            this->m_sourceName = msg.getSourceName();\r
 \r
             if (msg.getMediaContents() != nullptr)\r
-                m_mediaContents = new NSMediaContents(msg.getMediaContents()->getIconImage());\r
+                this->m_mediaContents = new NSMediaContents(msg.getMediaContents()->getIconImage());\r
             else\r
-                m_mediaContents = new NSMediaContents();\r
-            m_topic = msg.getTopic();\r
+                this->m_mediaContents = new NSMediaContents();\r
+            this->m_topic = msg.getTopic();\r
             return *this;\r
         }\r
 \r
index 5178b6c..9dddcd8 100755 (executable)
@@ -49,7 +49,7 @@ namespace OIC
         {
             for (auto it : topicsList.getTopicsList())
             {
-                addTopic(it->getTopicName(), it->getState());
+                this->addTopic(it->getTopicName(), it->getState());
             }
             return *this;
         }
index d8016b7..2c1ea66 100755 (executable)
@@ -51,9 +51,18 @@ namespace OIC
             ALLOW = 1,
             DENY = 2,
             TOPIC = 3,
-            DISCOVERED = 11,
             STOPPED = 12
         };
+        
+        /**
+             * NSProviderSubscribedState of notification service
+             */
+        enum class NSProviderSubscribedState
+        {
+            DENY = 0,
+            DISCOVERED = 1,
+            SUBSCRIBED = 2
+        };
     }
 }
 #endif /* _NS_UTILS_H_ */
index 06556c2..7ddc0c5 100755 (executable)
@@ -70,6 +70,7 @@ namespace OIC
                       * Constructor of NSProvider.\r
                       */\r
                 NSProvider(): m_topicList(new NSTopicsList()), m_state(NSProviderState::DENY),\r
+                    m_subscribedState(NSProviderSubscribedState::DENY),\r
                     m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL) {}\r
 \r
                 /**\r
@@ -79,6 +80,7 @@ namespace OIC
                       */\r
                 NSProvider(const std::string &providerId) : m_providerId(providerId),\r
                     m_topicList(new NSTopicsList()), m_state(NSProviderState::DENY),\r
+                    m_subscribedState(NSProviderSubscribedState::DENY),\r
                     m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)  {}\r
 \r
                 /**\r
@@ -89,6 +91,7 @@ namespace OIC
                       */\r
                 NSProvider(const std::string &providerId, NSTopicsList *topicList) : m_providerId(\r
                         providerId), m_topicList(topicList), m_state(NSProviderState::DENY),\r
+                    m_subscribedState(NSProviderSubscribedState::DENY),\r
                     m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)  {}\r
 \r
                 /**\r
@@ -148,6 +151,13 @@ namespace OIC
                 NSProviderState getProviderState() const;\r
 \r
                 /**\r
+                      * This method is for getting SubscribedState from the Notification service provider.\r
+                      *\r
+                      * @return subscribedState as NSProviderSubscribedState.\r
+                      */\r
+                NSProviderSubscribedState getProviderSubscribedState() const;\r
+\r
+                /**\r
                       * This method is for requesting subscription of Notification service.\r
                       *\r
                       */\r
@@ -213,6 +223,13 @@ namespace OIC
                      */\r
                 void setProviderState(const NSProviderState &providerState);\r
 \r
+                /**\r
+                     * This method is for setting subscribedState for the Notification service provider.\r
+                     *\r
+                     * @param subscribedState as NSProviderSubscribedState.\r
+                     */\r
+                void setProviderSubscribedState(const NSProviderSubscribedState &subscribedState);\r
+\r
             private:\r
                 ::NSProvider *getNSProvider();\r
 \r
@@ -220,6 +237,7 @@ namespace OIC
                 std::string m_providerId;\r
                 NSTopicsList *m_topicList;\r
                 NSProviderState m_state;\r
+                NSProviderSubscribedState m_subscribedState;\r
 \r
                 ProviderStateCallback m_stateCb;\r
                 MessageReceivedCallback m_messageCb;\r
index deb31d9..2c083e3 100755 (executable)
@@ -49,6 +49,7 @@ namespace OIC
                 nsProvider->setTopicList(new NSTopicsList(topicLL));\r
                 if (state == NS_DISCOVERED)\r
                 {\r
+                    nsProvider->setProviderSubscribedState(NSProviderSubscribedState::DISCOVERED);\r
                     if (discoveredCallback != NULL)\r
                     {\r
                         NS_LOG(DEBUG, "initiating the Discovered callback : NS_DISCOVERED, policy false");\r
@@ -57,6 +58,7 @@ namespace OIC
                 }\r
                 else if (state == NS_ALLOW)\r
                 {\r
+                    nsProvider->setProviderSubscribedState(NSProviderSubscribedState::SUBSCRIBED);\r
                     if (discoveredCallback != NULL)\r
                     {\r
                         NS_LOG(DEBUG, "initiating the Discovered callback : NS_ALLOW, policy true");\r
@@ -73,6 +75,7 @@ namespace OIC
                 delete nsProvider;\r
                 if (state == NS_ALLOW)\r
                 {\r
+                    oldProvider->setProviderSubscribedState(NSProviderSubscribedState::SUBSCRIBED);\r
                     if (changeCallback != NULL)\r
                     {\r
                         NS_LOG(DEBUG, "initiating the callback for Response : NS_ALLOW");\r
@@ -81,6 +84,7 @@ namespace OIC
                 }\r
                 else if (state == NS_DENY)\r
                 {\r
+                    oldProvider->setProviderSubscribedState(NSProviderSubscribedState::DENY);\r
                     NSConsumerService::getInstance()->getAcceptedProviders().remove(oldProvider);\r
                     if (changeCallback != NULL)\r
                     {\r
@@ -101,10 +105,12 @@ namespace OIC
                 }\r
                 else if (state == NS_STOPPED)\r
                 {\r
+                    oldProvider->setProviderSubscribedState(NSProviderSubscribedState::DENY);\r
+                    NSConsumerService::getInstance()->getAcceptedProviders().remove(oldProvider);\r
                     NS_LOG(DEBUG, "initiating the State callback : NS_STOPPED");\r
                     if (changeCallback != NULL)\r
                     {\r
-                        NS_LOG(DEBUG, "initiating the callback for Response : NS_TOPIC");\r
+                        NS_LOG(DEBUG, "initiating the callback for Response : NS_STOPPED");\r
                         changeCallback((NSProviderState)state);\r
                     }\r
                 }\r
@@ -199,6 +205,11 @@ namespace OIC
         {\r
             NS_LOG(DEBUG, "stop - IN");\r
             NSStopConsumer();\r
+            for (auto it : getAcceptedProviders())\r
+            {\r
+                delete it;\r
+            }\r
+            getAcceptedProviders().clear();\r
             NS_LOG(DEBUG, "stop - OUT");\r
             return;\r
         }\r
index c4d7269..e00e151 100755 (executable)
@@ -43,6 +43,8 @@ namespace OIC
             m_messageCb = NULL;\r
             m_syncInfoCb = NULL;\r
             m_state = NSProviderState::DENY;\r
+            m_subscribedState = NSProviderSubscribedState::DENY;\r
+\r
             m_topicList = new NSTopicsList();\r
 \r
             if (provider != nullptr)\r
@@ -54,6 +56,7 @@ namespace OIC
         NSProvider::NSProvider(const NSProvider &provider)\r
         {\r
             m_providerId = provider.getProviderId();\r
+            m_topicList = new NSTopicsList();\r
             auto topicsList = provider.getTopicList();\r
             if (topicsList != nullptr)\r
             {\r
@@ -65,22 +68,25 @@ namespace OIC
             setListener(provider.getProviderStateReceivedCb(), provider.getMessageReceivedCb(),\r
                         provider.getSyncInfoReceivedCb());\r
             setProviderState(provider.getProviderState());\r
+            setProviderSubscribedState(provider.getProviderSubscribedState());\r
         }\r
 \r
         NSProvider &NSProvider::operator=(const NSProvider &provider)\r
         {\r
-            m_providerId = provider.getProviderId();\r
+            this->m_providerId = provider.getProviderId();\r
+            this->m_topicList = new NSTopicsList();\r
             auto topicsList = provider.getTopicList();\r
             if (topicsList != nullptr)\r
             {\r
                 for (auto it : topicsList->getTopicsList())\r
                 {\r
-                    getTopicList()->addTopic(it->getTopicName(), it->getState());\r
+                    this->getTopicList()->addTopic(it->getTopicName(), it->getState());\r
                 }\r
             }\r
-            setListener(provider.getProviderStateReceivedCb(), provider.getMessageReceivedCb(),\r
-                        provider.getSyncInfoReceivedCb());\r
-            setProviderState(provider.getProviderState());\r
+            this->setListener(provider.getProviderStateReceivedCb(), provider.getMessageReceivedCb(),\r
+                              provider.getSyncInfoReceivedCb());\r
+            this->setProviderState(provider.getProviderState());\r
+            this->setProviderSubscribedState(provider.getProviderSubscribedState());\r
             return *this;\r
         }\r
 \r
@@ -165,6 +171,12 @@ namespace OIC
             return m_state;\r
         }\r
 \r
+        NSProviderSubscribedState NSProvider::getProviderSubscribedState() const\r
+        {\r
+            NS_LOG_V(DEBUG, "getProviderSubscribedState  state : %d", (int)m_subscribedState);\r
+            return m_subscribedState;\r
+        }\r
+\r
         void NSProvider::subscribe()\r
         {\r
             NS_LOG(DEBUG, "Subscribe - IN");\r
@@ -175,9 +187,8 @@ namespace OIC
         bool NSProvider::isSubscribed()\r
         {\r
             NS_LOG(DEBUG, "isSubscribed - IN");\r
-            auto state = getProviderState();\r
-            NS_LOG_V(DEBUG, "state : %d", (int)state);\r
-            if ((state == NSProviderState::ALLOW) || (state == NSProviderState::TOPIC) )\r
+            NS_LOG_V(DEBUG, "Subscribed state : %d", (int)getProviderSubscribedState());\r
+            if (getProviderSubscribedState() == NSProviderSubscribedState::SUBSCRIBED)\r
                 return true;\r
             return false;\r
         }\r
@@ -227,5 +238,10 @@ namespace OIC
         {\r
             m_state = providerState;\r
         }\r
+\r
+        void NSProvider::setProviderSubscribedState(const NSProviderSubscribedState &subscribedState)\r
+        {\r
+            m_subscribedState = subscribedState;\r
+        }\r
     }\r
 }\r
index c90f010..98d8853 100755 (executable)
@@ -44,8 +44,9 @@ void onNotificationPostedCb(OIC::Service::NSMessage *notification)
     std::cout << "topic : " <<  notification->getTopic() << std::endl;\r
 \r
     auto provider = NSConsumerService::getInstance()->getProvider(notification->getProviderId());\r
-    provider->sendSyncInfo(notification->getMessageId(),\r
-                           OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ);\r
+    if (provider != nullptr)\r
+        provider->sendSyncInfo(notification->getMessageId(),\r
+                               OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ);\r
 }\r
 \r
 void onNotificationSyncCb(OIC::Service::NSSyncInfo *sync)\r
index 9da7cb5..ffef86b 100755 (executable)
@@ -145,6 +145,7 @@ int main()
                 {\r
                     std::cout << "SendMessage" << std::endl;\r
 \r
+                    std::string dummy;\r
                     std::string title;\r
                     std::string body;\r
                     std::string topic;\r
@@ -152,13 +153,14 @@ int main()
                     std::cout << "id : " << ++id << std::endl;\r
                     std::cout << "title : ";\r
 \r
-                    std::cin >> title;\r
+                    std::getline(std::cin, dummy);\r
+                    std::getline(std::cin, title);\r
 \r
                     std::cout << "body : ";\r
-                    std::cin >> body;\r
+                    std::getline(std::cin, body);\r
 \r
                     std::cout << "topic : ";\r
-                    std::cin >> topic;\r
+                    std::getline(std::cin, topic);\r
 \r
                     std::cout << "app - mTitle : " << title << std::endl;\r
                     std::cout << "app - mContentText : " << body << std::endl;\r