From: KIM JungYong Date: Tue, 30 Aug 2016 00:22:53 +0000 (+0900) Subject: Update consumer logic for stopped provider. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ce1fd9fef57333c4d0c20c3307cbd524aeeeb72d;p=contrib%2Fiotivity.git Update consumer logic for stopped provider. 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 Reviewed-on: https://gerrit.iotivity.org/gerrit/11091 Tested-by: jenkins-iotivity Reviewed-by: Uze Choi --- diff --git a/service/notification/cpp-wrapper/consumer/src/NSConsumerService.cpp b/service/notification/cpp-wrapper/consumer/src/NSConsumerService.cpp index f3ee775..823047f 100755 --- a/service/notification/cpp-wrapper/consumer/src/NSConsumerService.cpp +++ b/service/notification/cpp-wrapper/consumer/src/NSConsumerService.cpp @@ -43,7 +43,7 @@ namespace OIC NS_LOG(DEBUG, "onNSProviderDiscovered - OUT"); } - void onNSProviderChanged(::NSProvider *provider, ::NSResponse response) + void onNSProviderChanged(::NSProvider *provider, ::NSProviderState response) { NS_LOG(DEBUG, "onNSProviderChanged - IN"); NS_LOG_V(DEBUG, "provider Id : %s", provider->providerId); @@ -160,7 +160,9 @@ namespace OIC NS_LOG(DEBUG, "Start - IN"); m_config = config; NSConsumerConfig nsConfig; - nsConfig.discoverCb = onNSProviderDiscovered; + + // TODO Check to changed c layer ConsumerConfig. + //nsConfig.discoverCb = onNSProviderDiscovered; nsConfig.changedCb = onNSProviderChanged; nsConfig.messageCb = onNSMessageReceived; nsConfig.syncInfoCb = onNSSyncInfoReceived; diff --git a/service/notification/examples/linux/notificationconsumer.c b/service/notification/examples/linux/notificationconsumer.c index a92ad70..7960996 100644 --- a/service/notification/examples/linux/notificationconsumer.c +++ b/service/notification/examples/linux/notificationconsumer.c @@ -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); diff --git a/service/notification/include/NSCommon.h b/service/notification/include/NSCommon.h index 1c550ed..9397e03 100644 --- a/service/notification/include/NSCommon.h +++ b/service/notification/include/NSCommon.h @@ -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 diff --git a/service/notification/include/NSConsumerInterface.h b/service/notification/include/NSConsumerInterface.h index 35f516c..c01f7bf 100644 --- a/service/notification/include/NSConsumerInterface.h +++ b/service/notification/include/NSConsumerInterface.h @@ -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 diff --git a/service/notification/src/consumer/NSConsumerCommon.c b/service/notification/src/consumer/NSConsumerCommon.c index 51fbaf3..90e87bd 100644 --- a/service/notification/src/consumer/NSConsumerCommon.c +++ b/service/notification/src/consumer/NSConsumerCommon.c @@ -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); } diff --git a/service/notification/src/consumer/NSConsumerCommon.h b/service/notification/src/consumer/NSConsumerCommon.h index db60ea0..c764d3c 100644 --- a/service/notification/src/consumer/NSConsumerCommon.h +++ b/service/notification/src/consumer/NSConsumerCommon.h @@ -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); diff --git a/service/notification/src/consumer/NSConsumerInternalTaskController.c b/service/notification/src/consumer/NSConsumerInternalTaskController.c index 9174aec..1b8068d 100644 --- a/service/notification/src/consumer/NSConsumerInternalTaskController.c +++ b/service/notification/src/consumer/NSConsumerInternalTaskController.c @@ -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) diff --git a/service/notification/unittest/NSConsumerTest.cpp b/service/notification/unittest/NSConsumerTest.cpp index aaaa683..e539f7f 100644 --- a/service/notification/unittest/NSConsumerTest.cpp +++ b/service/notification/unittest/NSConsumerTest.cpp @@ -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;