Update consumer logic for stopped provider.
authorKIM JungYong <jyong2.kim@samsung.com>
Tue, 30 Aug 2016 00:22:53 +0000 (09:22 +0900)
committerUze Choi <uzchoi@samsung.com>
Fri, 2 Sep 2016 05:14:09 +0000 (05:14 +0000)
When the provider was stopped service,
consumer service will feedback to upperlayer on ProviderChangedCallback but non-feedback before.
This patch enable feedback when stopped provider service.

And enum value of NS_STOPPED is added.
NSResponse enum structure is renamed with NSProviderState.

Change-Id: I7fdd2ca1d3ba0b534c74b0fbc6719616daab2f67
Signed-off-by: KIM JungYong <jyong2.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/11091
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/notification/cpp-wrapper/consumer/src/NSConsumerService.cpp
service/notification/examples/linux/notificationconsumer.c
service/notification/include/NSCommon.h
service/notification/include/NSConsumerInterface.h
service/notification/src/consumer/NSConsumerCommon.c
service/notification/src/consumer/NSConsumerCommon.h
service/notification/src/consumer/NSConsumerInternalTaskController.c
service/notification/unittest/NSConsumerTest.cpp

index f3ee775..823047f 100755 (executable)
@@ -43,7 +43,7 @@ namespace OIC
             NS_LOG(DEBUG, "onNSProviderDiscovered - OUT");\r
         }\r
 \r
-        void onNSProviderChanged(::NSProvider *provider, ::NSResponse response)\r
+        void onNSProviderChanged(::NSProvider *provider, ::NSProviderState response)\r
         {\r
             NS_LOG(DEBUG, "onNSProviderChanged - IN");\r
             NS_LOG_V(DEBUG, "provider Id : %s", provider->providerId);\r
@@ -160,7 +160,9 @@ namespace OIC
             NS_LOG(DEBUG, "Start - IN");\r
             m_config = config;\r
             NSConsumerConfig nsConfig;\r
-            nsConfig.discoverCb = onNSProviderDiscovered;\r
+\r
+            // TODO Check to changed c layer ConsumerConfig.\r
+            //nsConfig.discoverCb = onNSProviderDiscovered;\r
             nsConfig.changedCb = onNSProviderChanged;\r
             nsConfig.messageCb = onNSMessageReceived;\r
             nsConfig.syncInfoCb = onNSSyncInfoReceived;\r
index a92ad70..7960996 100644 (file)
@@ -71,7 +71,7 @@ void printProviderTopicList(NSProvider *provider)
     }
 }
 
-void onProviderChanged(NSProvider * provider, NSResponse response)
+void onProviderChanged(NSProvider * provider, NSProviderState response)
 {
     printf("Provider changed: %d\n", response);
     printf("subscribed provider Id : %s\n", provider->providerId);
index 1c550ed..9397e03 100644 (file)
@@ -63,16 +63,16 @@ typedef enum eResult
 } NSResult;
 
 /**
- * Response code of notification service
+ * Provider state of notification consumer service
  */
-typedef enum eResponse
+typedef enum
 {
-    NS_DISCOVERED = 0,
     NS_ALLOW = 1,
     NS_DENY = 2,
     NS_TOPIC = 3,
-
-} NSResponse;
+    NS_DISCOVERED = 11,
+    NS_STOPPED = 12
+} NSProviderState;
 
 /**
  * Notification message status to synchronize
index 35f516c..c01f7bf 100644 (file)
@@ -37,9 +37,9 @@ extern "C"
 /**
  * Invoked when the provider state is changed
  * @param[in] provider  Provider which has the notification resource
- * @param[in] response  Response which has the provider state
+ * @param[in] state  Response which has the provider state
  */
-typedef void (* NSProviderStateCallback)(NSProvider *, NSResponse);
+typedef void (* NSProviderStateCallback)(NSProvider *, NSProviderState);
 
 /**
  * Invoked when the notification message from provider is received
index 51fbaf3..90e87bd 100644 (file)
@@ -117,7 +117,7 @@ void NSSetProviderChangedCb(NSProviderStateCallback cb)
     *(NSGetProviderChangedCb()) = cb;
 }
 
-void NSProviderChanged(NSProvider * provider, NSResponse response)
+void NSProviderChanged(NSProvider * provider, NSProviderState response)
 {
     (*(NSGetProviderChangedCb()))(provider, response);
 }
index db60ea0..c764d3c 100644 (file)
@@ -107,7 +107,7 @@ bool NSIsStartedConsumer();
 void NSSetIsStartedConsumer(bool setValue);
 
 void NSSetProviderChangedCb(NSProviderStateCallback cb);
-void NSProviderChanged(NSProvider * provider, NSResponse response);
+void NSProviderChanged(NSProvider * provider, NSProviderState response);
 
 void NSSetMessagePostedCb(NSMessageReceivedCallback  cb);
 void NSMessagePost(NSMessage * obj);
index 9174aec..1b8068d 100644 (file)
@@ -312,6 +312,10 @@ void NSConsumerHandleProviderDeleted(NSProvider_internal * provider)
 
     NSResult ret = NSStorageDelete(providerCache, provider->providerId);
     NS_VERIFY_NOT_NULL_V(ret == NS_OK ? (void *)1 : NULL);
+
+    NS_LOG_V(DEBUG, "Stopped Provider : %s", provider->providerId);
+    NSProvider * providerForCb = NSCopyProvider(provider);
+    NSProviderChanged(providerForCb, NS_STOPPED);
 }
 
 void NSConsumerHandleSubscribeSucceed(NSProvider_internal * provider)
@@ -341,7 +345,7 @@ void NSConsumerHandleRecvProviderChanged(NSMessage * msg)
 
     NS_LOG(DEBUG, "call back to user");
     NSProvider * prov = NSCopyProvider(provider);
-    NSProviderChanged(prov, (NSResponse) msg->messageId);
+    NSProviderChanged(prov, (NSProviderState) msg->messageId);
     NSRemoveProvider_internal(provider);
 }
 
@@ -421,7 +425,7 @@ void NSConsumerHandleRecvTopicLL(NSProvider_internal * provider)
 
     NS_LOG(DEBUG, "call back to user");
     NSProvider * prov = NSCopyProvider(provider);
-    NSProviderChanged((NSProvider *) prov, (NSResponse) NS_TOPIC);
+    NSProviderChanged((NSProvider *) prov, (NSProviderState) NS_TOPIC);
 }
 
 void NSConsumerInternalTaskProcessing(NSTask * task)
index aaaa683..e539f7f 100644 (file)
@@ -100,7 +100,7 @@ public:
         std::cout << __func__ << std::endl;
     }
 
-    static void NSProviderChangedCallback(NSProvider *,  NSResponse)
+    static void NSProviderChangedCallback(NSProvider *,  NSProviderState)
     {
         std::cout << __func__ << std::endl;
     }
@@ -161,7 +161,7 @@ TEST_F(NotificationConsumerTest, StopConsumerPositive)
 TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenStartedConsumerFirst)
 {
     mocks.ExpectCallFunc(NSProviderChangedCallback).Do(
-            [this](NSProvider *, NSResponse)
+            [this](NSProvider *, NSProviderState)
             {
                 std::cout << "Call Discovered" << std::endl;
                 responseCon.notify_all();
@@ -189,7 +189,7 @@ TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenStartedConsu
     }
 
     mocks.ExpectCallFunc(NSProviderChangedCallback).Do(
-            [this](NSProvider * provider, NSResponse)
+            [this](NSProvider * provider, NSProviderState)
             {
                 std::cout << "Call Discovered" << std::endl;
                 g_provider = provider;
@@ -207,7 +207,7 @@ TEST_F(NotificationConsumerTest, DiscoverProviderWithNonAccepterWhenRescan)
 {
     g_providerSimul.setAccepter((int)NSSelector::NS_SELECTION_CONSUMER);
     mocks.ExpectCallFunc(NSProviderChangedCallback).Do(
-            [this](NSProvider * provider, NSResponse)
+            [this](NSProvider * provider, NSProviderState)
             {
                 std::cout << "Call Discovered" << std::endl;
                 g_provider = provider;