From 0c1157cd13a40a604cbd68c6d01f884bb06e9c1b Mon Sep 17 00:00:00 2001 From: "abitha.s" Date: Mon, 8 Aug 2016 15:06:37 +0530 Subject: [PATCH] Modified the Provider Configuration. 1. modified NSStartProvider API arguments in proivder side. 2. Uncomments out about jni, unittest and Cpp wrapper in SConscript. 3. Added CreateMessage API in Provider Side Change-Id: I8be29121901d21e13f137828329da59c4c8ef1b8 Signed-off-by: abitha.s Reviewed-on: https://gerrit.iotivity.org/gerrit/10133 Tested-by: jenkins-iotivity Reviewed-by: Madan Lanka --- service/notification/SConscript | 10 ++++----- .../src/main/jni/notificationProvider.c | 9 ++++---- .../notification/cpp-wrapper/common/NSMessage.cpp | 10 --------- .../notification/cpp-wrapper/common/NSMessage.h | 14 ------------ .../examples/linux/notificationserviceprovider.cpp | 13 ++++++----- .../cpp-wrapper/provider/inc/NSProviderService.h | 18 +++++++++++++-- .../cpp-wrapper/provider/src/NSProviderService.cpp | 26 ++++++++++++++++++---- service/notification/unittest/NSProviderTest.cpp | 26 +++++++++++++++------- 8 files changed, 74 insertions(+), 52 deletions(-) mode change 100644 => 100755 service/notification/SConscript mode change 100644 => 100755 service/notification/android/notification-service/src/main/jni/notificationProvider.c mode change 100644 => 100755 service/notification/unittest/NSProviderTest.cpp diff --git a/service/notification/SConscript b/service/notification/SConscript old mode 100644 new mode 100755 index 957d4e3..8e1350f --- a/service/notification/SConscript +++ b/service/notification/SConscript @@ -111,15 +111,15 @@ notification_env.UserInstallTargetHeader('include/NSConsumerInterface.h',\ 'service/notification', 'NSConsumerInterface.h') # Go to build Unit test -#if target_os == 'linux': - #SConscript('unittest/SConscript') +if target_os == 'linux': + SConscript('unittest/SConscript') # Go to build sample apps SConscript('examples/SConscript') # Go to build jni -#if target_os == 'android': -# SConscript('android/SConscript') +if target_os == 'android': + SConscript('android/SConscript') # Go to build c++ wrapper -#SConscript('cpp-wrapper/SConscript') \ No newline at end of file +SConscript('cpp-wrapper/SConscript') \ No newline at end of file diff --git a/service/notification/android/notification-service/src/main/jni/notificationProvider.c b/service/notification/android/notification-service/src/main/jni/notificationProvider.c old mode 100644 new mode 100755 index c906357..b60367e --- a/service/notification/android/notification-service/src/main/jni/notificationProvider.c +++ b/service/notification/android/notification-service/src/main/jni/notificationProvider.c @@ -52,10 +52,11 @@ JNIEXPORT jint JNICALL Java_org_iotivity_service_notification_IoTNotification_NS g_obj_subscriptionListener = (jobject) (*env)->NewGlobalRef(env, jSubscriptionListener); g_obj_syncListener = (jobject) (*env)->NewGlobalRef(env, jSyncListener); - // check access policy - bool policy = true; - - if (NSStartProvider(policy, NSSubscribeRequestCb, NSSyncCb) != NS_OK) + NSProviderConfig config; + config.subRequestCallback = NSSubscribeRequestCb; + config.syncInfoCallback = NSSyncCb; + config.policy = true; + if (NSStartProvider(config) != NS_OK) { LOGE("Fail to start NSProvider service"); return (jint) NS_ERROR; diff --git a/service/notification/cpp-wrapper/common/NSMessage.cpp b/service/notification/cpp-wrapper/common/NSMessage.cpp index 899b22c..0cf3e54 100755 --- a/service/notification/cpp-wrapper/common/NSMessage.cpp +++ b/service/notification/cpp-wrapper/common/NSMessage.cpp @@ -104,16 +104,6 @@ namespace OIC return m_mediaContents; } - void NSMessage::setMessageId(const uint64_t &messageId) - { - m_messageId = messageId; - } - - void NSMessage::setProviderId(const std::string &providerId) - { - m_providerId = providerId; - } - void NSMessage::setType(const NSMessageType &type) { m_type = type; diff --git a/service/notification/cpp-wrapper/common/NSMessage.h b/service/notification/cpp-wrapper/common/NSMessage.h index 6cd7755..3f3d09c 100755 --- a/service/notification/cpp-wrapper/common/NSMessage.h +++ b/service/notification/cpp-wrapper/common/NSMessage.h @@ -75,13 +75,6 @@ namespace OIC uint64_t getMessageId() const; /** - * This method is for setting Message Id from the Notification service Message. - * - * @param messageId as uint64_t. - */ - void setMessageId(const uint64_t &messageId); - - /** * This method is for getting Provider Id from the Notification service Message. * * @return Id as string. @@ -89,13 +82,6 @@ namespace OIC std::string getProviderId() const; /** - * This method is for setting Provider Id from the Notification service Message. - * - * @param providerId as string. - */ - void setProviderId(const std::string &providerId); - - /** * This method is for getting type from the Notification service Message. * * @return type as NSMessageType. diff --git a/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp b/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp index 3e93025..339d1f0 100755 --- a/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp +++ b/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp @@ -111,7 +111,9 @@ int main() NSProviderService::ProviderConfig cfg; cfg.m_subscribeRequestCb = subscribeRequestCallback; cfg.m_syncInfoCb = syncCallback; - NSProviderService::getInstance()->Start(NSProviderService::NSAccessPolicy::NS_ACCESS_ALLOW, cfg); + cfg.policy = (bool) NSProviderService::NSAccessPolicy::NS_ACCESS_ALLOW; + + NSProviderService::getInstance()->Start(cfg); break; } case 2: @@ -120,7 +122,9 @@ int main() NSProviderService::ProviderConfig cfg; cfg.m_subscribeRequestCb = subscribeRequestCallback; cfg.m_syncInfoCb = syncCallback; - NSProviderService::getInstance()->Start(NSProviderService::NSAccessPolicy::NS_ACCESS_DENY, cfg); + cfg.policy = (bool) NSProviderService::NSAccessPolicy::NS_ACCESS_DENY; + + NSProviderService::getInstance()->Start(cfg); break; } case 3: @@ -141,12 +145,11 @@ int main() std::cout << "app - mTitle : " << title << std::endl; std::cout << "app - mContentText : " << body << std::endl; - OIC::Service::NSMessage *msg = new OIC::Service::NSMessage(); + OIC::Service::NSMessage *msg = NSProviderService::getInstance()->CreateMessage(); + msg->setType(OIC::Service::NSMessage::NSMessageType::NS_MESSAGE_INFO); msg->setTitle(title.c_str()); msg->setContentText(body.c_str()); - msg->setTime(""); - msg->setTTL(0); msg->setSourceName("OCF"); NSProviderService::getInstance()->SendMessage(msg); diff --git a/service/notification/cpp-wrapper/provider/inc/NSProviderService.h b/service/notification/cpp-wrapper/provider/inc/NSProviderService.h index b71ae29..9b64ec6 100755 --- a/service/notification/cpp-wrapper/provider/inc/NSProviderService.h +++ b/service/notification/cpp-wrapper/provider/inc/NSProviderService.h @@ -61,7 +61,7 @@ namespace OIC /** * @struct ProviderConfig - * @brief Provider sets this callback function configuration for registering callbacks + * @brief Provider sets this following configuration for registering callbacks and configs * */ typedef struct @@ -70,6 +70,14 @@ namespace OIC ConsumerSubscribedCallback m_subscribeRequestCb; /** m_syncInfoCb - MessageSynchronizedCallback callback listener.*/ MessageSynchronizedCallback m_syncInfoCb; + + /* Set the policy for notification servcie refering to following + * if policy is true, provider decides to allow or deny for all the subscribing consumers. + * Otherwise(policy is false) consumer decides to request subscription to discovered providers. + */ + bool policy; + /* User Information */ + std::string userInfo; } ProviderConfig; /** @@ -95,7 +103,7 @@ namespace OIC * and onMessageSynchronized function listeners * @return :: result code of Provider Service */ - Result Start(NSAccessPolicy policy, ProviderConfig config); + Result Start(ProviderConfig config); /** * Terminate notification service for provider @@ -133,6 +141,12 @@ namespace OIC void SendSyncInfo(uint64_t messageId, NSSyncInfo::NSSyncType type); /** + * Initialize NSMessage class, service sets message id and provider(device) id + * @return ::NSMessage * + */ + NSMessage *CreateMessage(); + + /** * get Provider config values * @return ProviderConfig callbaks set */ diff --git a/service/notification/cpp-wrapper/provider/src/NSProviderService.cpp b/service/notification/cpp-wrapper/provider/src/NSProviderService.cpp index fa9a902..e4335a7 100755 --- a/service/notification/cpp-wrapper/provider/src/NSProviderService.cpp +++ b/service/notification/cpp-wrapper/provider/src/NSProviderService.cpp @@ -78,14 +78,18 @@ namespace OIC return &s_instance; } - Result NSProviderService::Start(NSProviderService::NSAccessPolicy policy, - NSProviderService::ProviderConfig config) + Result NSProviderService::Start(NSProviderService::ProviderConfig config) { NS_LOG(DEBUG, "Start - IN"); m_config = config; - Result result = (Result) NSStartProvider((::NSAccessPolicy)policy, - onConsumerSubscribedCallback, onMessageSynchronizedCallback); + NSProviderConfig nsConfig; + nsConfig.subRequestCallback = onConsumerSubscribedCallback; + nsConfig.syncInfoCallback = onMessageSynchronizedCallback; + nsConfig.policy = config.policy; + nsConfig.userInfo = OICStrdup(config.userInfo.c_str()); + + Result result = (Result) NSStartProvider(nsConfig); NS_LOG(DEBUG, "Start - OUT"); return result; } @@ -145,6 +149,20 @@ namespace OIC return; } + NSMessage *NSProviderService::CreateMessage() + { + NS_LOG(DEBUG, "CreateMessage - IN"); + + ::NSMessage *message = NSCreateMessage(); + NSMessage *nsMessage = new NSMessage(message); + + NS_LOG_V(DEBUG, "Message ID : %lld", nsMessage->getMessageId()); + NS_LOG_V(DEBUG, "Provider ID : %s", nsMessage->getProviderId().c_str()); + NS_LOG(DEBUG, "CreateMessage - OUT"); + + return nsMessage; + } + NSProviderService::ProviderConfig NSProviderService::getProviderConfig() { return m_config; diff --git a/service/notification/unittest/NSProviderTest.cpp b/service/notification/unittest/NSProviderTest.cpp old mode 100644 new mode 100755 index 1b1f345..ce86a03 --- a/service/notification/unittest/NSProviderTest.cpp +++ b/service/notification/unittest/NSProviderTest.cpp @@ -132,9 +132,12 @@ protected: TEST_F(NotificationProviderTest, StartProviderPositiveWithNSPolicyTrue) { - NSResult ret = NSStartProvider(true, - NSRequestedSubscribeCallbackEmpty, - NSSyncCallbackEmpty); + NSProviderConfig config; + config.subRequestCallback = NSRequestedSubscribeCallbackEmpty; + config.syncInfoCallback = NSSyncCallbackEmpty; + config.policy = true; + + NSResult ret = NSStartProvider(config); std::unique_lock< std::mutex > lock{ mutexForCondition }; responseCon.wait_for(lock, g_waitForResponse); @@ -154,9 +157,12 @@ TEST_F(NotificationProviderTest, StopProviderPositive) TEST_F(NotificationProviderTest, StartProviderPositiveWithNSPolicyFalse) { - NSResult ret = NSStartProvider(false, - NSRequestedSubscribeCallbackEmpty, - NSSyncCallbackEmpty); + NSProviderConfig config; + config.subRequestCallback = NSRequestedSubscribeCallbackEmpty; + config.syncInfoCallback = NSSyncCallbackEmpty; + config.policy = false; + + NSResult ret = NSStartProvider(config); std::unique_lock< std::mutex > lock{ mutexForCondition }; responseCon.wait_for(lock, std::chrono::milliseconds(3000)); @@ -178,8 +184,12 @@ TEST_F(NotificationProviderTest, ExpectCallbackWhenReceiveSubscribeRequestWithAc responseCon.notify_all(); }); - NSStartProvider(true, - NSRequestedSubscribeCallbackEmpty, NSSyncCallbackEmpty); + NSProviderConfig config; + config.subRequestCallback = NSRequestedSubscribeCallbackEmpty; + config.syncInfoCallback = NSSyncCallbackEmpty; + config.policy = true; + + NSStartProvider(config); { std::unique_lock< std::mutex > lock{ mutexForCondition }; -- 2.7.4