From 7589eaf024e0cef6405794a287e4d29307d3dad1 Mon Sep 17 00:00:00 2001 From: "abitha.s" Date: Tue, 18 Oct 2016 19:01:46 +0530 Subject: [PATCH] Updated NS Sample App for testing Sync and sending complete NSMessage Change-Id: I8bf14b020b1e5ec42dcf5710fe30a1b6beefbe4b Signed-off-by: abitha.s Reviewed-on: https://gerrit.iotivity.org/gerrit/13401 Tested-by: jenkins-iotivity Reviewed-by: Uze Choi (cherry picked from commit 307953f025c470abc8ea8b6f2ea8297fa38cc42f) Reviewed-on: https://gerrit.iotivity.org/gerrit/13425 --- .../examples/linux/notificationserviceconsumer.cpp | 122 ++++++++++++++--- .../examples/linux/notificationserviceprovider.cpp | 146 ++++++++++++++++----- 2 files changed, 219 insertions(+), 49 deletions(-) diff --git a/service/notification/cpp-wrapper/examples/linux/notificationserviceconsumer.cpp b/service/notification/cpp-wrapper/examples/linux/notificationserviceconsumer.cpp index c722713..d6fac69 100755 --- a/service/notification/cpp-wrapper/examples/linux/notificationserviceconsumer.cpp +++ b/service/notification/cpp-wrapper/examples/linux/notificationserviceconsumer.cpp @@ -35,6 +35,7 @@ using namespace OIC::Service; bool isExit = false; std::string REMOTE_SERVER_ADDRESS; std::string mainProvider; +uint64_t mainMessageId = 0; FILE* server_fopen(const char *path, const char *mode) { @@ -44,23 +45,46 @@ FILE* server_fopen(const char *path, const char *mode) void onNotificationPostedCb(OIC::Service::NSMessage *notification) { + std::cout << "------------------------------------" << std::endl; + std::cout << "Message Received " << std::endl; + std::cout << "------------------------------------" << std::endl; std::cout << "id : " << notification->getMessageId() << std::endl; std::cout << "title : " << notification->getTitle() << std::endl; std::cout << "content : " << notification->getContentText() << std::endl; std::cout << "source : " << notification->getSourceName() << std::endl; std::cout << "topic : " << notification->getTopic() << std::endl; - - auto provider = NSConsumerService::getInstance()->getProvider(notification->getProviderId()); - if (provider != nullptr) + std::cout << "type : " << (int) notification->getType() << std::endl; + std::cout << "TTL : " << notification->getTTL() << std::endl; + std::cout << "time : " << notification->getTime() << std::endl; + if(notification->getMediaContents() != nullptr) + { + std::cout << "MediaContents IconImage : " << notification->getMediaContents()->getIconImage() + << std::endl; + } + std::cout << "ExtraInfo " << std::endl; + OC::OCRepresentation rep = notification->getExtraInfo(); + for(auto it : rep.getResourceTypes()) + { + std::cout << "resourceType : " << it << std::endl; + } + for(auto it : rep.getResourceInterfaces()) { - provider->sendSyncInfo(notification->getMessageId(), - OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ); + std::cout << "Interface : " << it << std::endl; } + for(auto it : rep.getValues()) + { + std::cout << "Key : " << it.first << std::endl; + } + mainMessageId = notification->getMessageId(); } void onNotificationSyncCb(OIC::Service::NSSyncInfo *sync) { + std::cout << "------------------------------------" << std::endl; + std::cout << "SyncInfo Received " << std::endl; + std::cout << "------------------------------------" << std::endl; std::cout << "Sync ID : " << sync->getMessageId() << std::endl; + std::cout << "Provider ID : " << sync->getProviderId() << std::endl; std::cout << "Sync STATE : " << (int) sync->getState() << std::endl; } @@ -74,6 +98,7 @@ void onProviderStateChangedCb(OIC::Service::NSProviderState state) else if (state == OIC::Service::NSProviderState::DENY) { std::cout << "Provider Subscription Denied" << std::endl; + std::cout << "------------------------------------" << std::endl; } else if (state == OIC::Service::NSProviderState::TOPIC) { @@ -94,13 +119,15 @@ void onProviderStateChangedCb(OIC::Service::NSProviderState state) else if (state == OIC::Service::NSProviderState::STOPPED) { std::cout << "Provider Stopped" << std::endl; + std::cout << "------------------------------------" << std::endl; } } void onDiscoverNotificationCb(OIC::Service::NSProvider *provider) { - std::cout << "notification resource discovered" << std::endl; + std::cout << "Notification Resource Discovered" << std::endl; std::cout << "SetListeners for callbacks" << std::endl; + std::cout << "ProviderID : " << provider->getProviderId() << std::endl; provider->setListener(onProviderStateChangedCb, onNotificationPostedCb, onNotificationSyncCb); if (!provider->isSubscribed()) { @@ -155,27 +182,87 @@ int main(void) std::cout << "1. Start Consumer" << std::endl; std::cout << "2. Stop Consumer" << std::endl; - std::cout << "3. GetTopicList" << std::endl; - std::cout << "4. UpdateTopicList" << std::endl; + std::cout << "3. SendSyncInfo" << std::endl; + std::cout << "4. GetTopicList" << std::endl; + std::cout << "5. UpdateTopicList" << std::endl; #ifdef WITH_CLOUD - std::cout << "5. Enable NS Consumer RemoteService" << std::endl; + std::cout << "6. Enable NS Consumer RemoteService" << std::endl; #endif - std::cout << "6. Exit" << std::endl; + std::cout << "7. Exit" << std::endl; std::cout << "Input: " << std::endl; std::cin >> num; switch (num) { case 1: - std::cout << "1. Start the Notification Consumer" << std::endl; + std::cout << "Start the Notification Consumer" << std::endl; NSConsumerService::getInstance()->start(onDiscoverNotificationCb); break; case 2: - std::cout << "2. Stop the Notification Consumer" << std::endl; + std::cout << "Stop the Notification Consumer" << std::endl; NSConsumerService::getInstance()->stop(); break; case 3: { + std::cout << "SendSyncInfo" << std::endl; + if(!mainMessageId) + { + std::cout << "Message ID is empty" << std::endl; + break; + } + std::cout << "1. Send Read Sync" << std::endl; + std::cout << "2. Send Delete Sync" << std::endl; + int syn = 0; + while(!(std::cin >> syn)){ + cout << "Bad value!"; + std::cin.clear(); + std::cin.ignore(numeric_limits::max(), '\n'); + } + switch (syn) + { + case 1: + { + std::cout << "Sending Read Sync" << std::endl; + auto provider = NSConsumerService::getInstance()->getProvider( + mainProvider); + if (provider != nullptr) + { + provider->sendSyncInfo(mainMessageId, + OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ); + } + } + break; + case 2: + { + std::cout << "Sending Delete Sync" << std::endl; + auto provider = NSConsumerService::getInstance()->getProvider( + mainProvider); + if (provider != nullptr) + { + provider->sendSyncInfo(mainMessageId, + OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_DELETED); + } + } + break; + default: + { + cout << "Invalid Input!. sending default Read Sync"; + auto provider = NSConsumerService::getInstance()->getProvider( + mainProvider); + if (provider != nullptr) + { + provider->sendSyncInfo(mainMessageId, + OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ); + } + std::cin.clear(); + std::cin.ignore(numeric_limits::max(), '\n'); + break; + } + } + break; + } + case 4: + { std::cout << "GetTopicList" << std::endl; OIC::Service::NSProvider *provider = NSConsumerService::getInstance()->getProvider(mainProvider); if (provider != nullptr) @@ -192,7 +279,7 @@ int main(void) } } break; - case 4: + case 5: { std::cout << "UpdateTopicList" << std::endl; OIC::Service::NSProvider *provider = NSConsumerService::getInstance()->getProvider(mainProvider); @@ -210,21 +297,22 @@ int main(void) } break; #ifdef WITH_CLOUD - case 5: + case 6: { - std::cout << "5. Enable NS Consumer RemoteService" << std::endl; + std::cout << "Enable NS Consumer RemoteService" << std::endl; std::cout << "Input the Server Address :"; std::cin >> REMOTE_SERVER_ADDRESS; NSConsumerService::getInstance()->enableRemoteService(REMOTE_SERVER_ADDRESS); break; } #endif - case 6: - std::cout << "6. Exit" << std::endl; + case 7: + std::cout << "Exit" << std::endl; NSConsumerService::getInstance()->stop(); isExit = true; break; default: + std::cout << "Under Construction" << std::endl; std::cin.clear(); std::cin.ignore(numeric_limits::max(), '\n'); break; diff --git a/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp b/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp index eef42db..35fae95 100755 --- a/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp +++ b/service/notification/cpp-wrapper/examples/linux/notificationserviceprovider.cpp @@ -36,7 +36,7 @@ using namespace std; using namespace OIC::Service; std::string mainConsumer; -uint64_t mainMessageId; +uint64_t mainMessageId = 0; extern char *strdup(const char *s); @@ -74,8 +74,9 @@ void subscribeRequestCallback(OIC::Service::NSConsumer *consumer) void syncCallback(OIC::Service::NSSyncInfo *sync) { - std::cout << "synnc requested" << std::endl; - + std::cout << "SyncInfo Received " << std::endl; + std::cout << "Sync ID : " << sync->getMessageId() << std::endl; + std::cout << "Provider ID : " << sync->getProviderId() << std::endl; std::cout << "Sync State: " << (int) sync->getState() << std::endl; } @@ -99,21 +100,23 @@ int main() { std::cout << "1. Start the Notification Provider(Accepter: Provider)" << std::endl; std::cout << "2. Start the Notification Provider(Accepter: Consumer)" << std::endl; - std::cout << "3. SendMessage " << std::endl; - std::cout << "4. SendSyncInfo" << std::endl; - - std::cout << "5. RegisterTopic" << std::endl; - std::cout << "6. UnregisterTopic" << std::endl; - std::cout << "7. SetTopic" << std::endl; - std::cout << "8. UnsetTopic" << std::endl; - std::cout << "9. GetConsumerTopicList" << std::endl; - std::cout << "10. GetRegisteredTopicList" << std::endl; + std::cout << "3. Allow Subscription" << std::endl; + std::cout << "4. Deny Subscription" << std::endl; + std::cout << "5. SendMessage " << std::endl; + std::cout << "6. SendSyncInfo" << std::endl; + + std::cout << "7. RegisterTopic" << std::endl; + std::cout << "8. UnregisterTopic" << std::endl; + std::cout << "9. SetTopic" << std::endl; + std::cout << "10. UnsetTopic" << std::endl; + std::cout << "11. GetConsumerTopicList" << std::endl; + std::cout << "12. GetRegisteredTopicList" << std::endl; #ifdef WITH_CLOUD - std::cout << "11. Enable NS Provider RemoteService" << std::endl; - std::cout << "12. Disable NS Provider RemoteService" << std::endl; + std::cout << "13. Enable NS Provider RemoteService" << std::endl; + std::cout << "14. Disable NS Provider RemoteService" << std::endl; #endif - std::cout << "13. Stop the Notification Provider" << std::endl; - std::cout << "14. Exit()" << std::endl; + std::cout << "15. Stop the Notification Provider" << std::endl; + std::cout << "16. Exit()" << std::endl; std::cout << "input : "; @@ -145,7 +148,33 @@ int main() } case 3: { + std::cout << "Allow Subscription" << std::endl; + OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer( + mainConsumer); + if (consumer != nullptr) + { + std::cout << "ALLOW" << std::endl; + consumer->acceptSubscription(true); + } + break; + } + case 4: + { + std::cout << "Deny Subscription" << std::endl; + OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer( + mainConsumer); + if (consumer != nullptr) + { + std::cout << "DENY" << std::endl; + consumer->acceptSubscription(false); + } + break; + } + case 5: + { + std::cout << "------------------------------------" << std::endl; std::cout << "SendMessage" << std::endl; + std::cout << "------------------------------------" << std::endl; std::string dummy; std::string title; @@ -175,22 +204,73 @@ int main() msg->setContentText(body.c_str()); msg->setSourceName("OCF"); msg->setTopic(topic); + msg->setTTL(40); + msg->setTime("12:30"); + OIC::Service::NSMediaContents *mediaContents = + new OIC::Service::NSMediaContents("iconImage"); + msg->setMediaContents(mediaContents); + + OC::OCRepresentation rep; + rep.setValue("Key1","Value1"); + rep.setValue("Key2","Value2"); + msg->setExtraInfo(rep); + mainMessageId = msg->getMessageId(); std::cout << "ProviderID for Message : " << msg->getProviderId() << std::endl; + std::cout << "MessageID for Message : " << msg->getMessageId() << std::endl; NSProviderService::getInstance()->sendMessage(msg); - + delete mediaContents; break; } - case 4: + case 6: { + std::cout << "------------------------------------" << std::endl; std::cout << "SendSyncInfo" << std::endl; - NSProviderService::getInstance()->sendSyncInfo(mainMessageId, - OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ); + std::cout << "------------------------------------" << std::endl; + if(!mainMessageId) + { + std::cout << "Message ID is empty" << std::endl; + break; + } + std::cout << "1. Send Read Sync" << std::endl; + std::cout << "2. Send Delete Sync" << std::endl; + int syn = 0; + while(!(std::cin >> syn)){ + cout << "Bad value!"; + std::cin.clear(); + std::cin.ignore(numeric_limits::max(), '\n'); + } + switch (syn) + { + case 1: + { + std::cout << "Sending Read Sync" << std::endl; + NSProviderService::getInstance()->sendSyncInfo(mainMessageId, + OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ); + } + break; + case 2: + { + std::cout << "Sending Delete Sync" << std::endl; + NSProviderService::getInstance()->sendSyncInfo(mainMessageId, + OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_DELETED); + } + break; + default: + { + cout << "Invalid Input!. sending default Read Sync"; + NSProviderService::getInstance()->sendSyncInfo(mainMessageId, + OIC::Service::NSSyncInfo::NSSyncType::NS_SYNC_READ); + std::cin.clear(); + std::cin.ignore(numeric_limits::max(), '\n'); + break; + } + } break; } - case 5: + case 7: std::cout << "RegisterTopic" << std::endl; NSProviderService::getInstance()->registerTopic("OCF_TOPIC1"); NSProviderService::getInstance()->registerTopic("OCF_TOPIC2"); @@ -198,12 +278,12 @@ int main() NSProviderService::getInstance()->registerTopic("OCF_TOPIC4"); break; - case 6: + case 8: std::cout << "UnregisterTopic" << std::endl; NSProviderService::getInstance()->unregisterTopic("OCF_TOPIC2"); break; - case 7: + case 9: { std::cout << "SetTopic" << std::endl; OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(mainConsumer); @@ -216,7 +296,7 @@ int main() } break; } - case 8: + case 10: { std::cout << "UnsetTopic" << std::endl; OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(mainConsumer); @@ -229,7 +309,7 @@ int main() } break; - case 9: + case 11: { std::cout << "GetConsumerTopicList" << std::endl; OIC::Service::NSConsumer *consumer = NSProviderService::getInstance()->getConsumer(mainConsumer); @@ -251,7 +331,7 @@ int main() } break; - case 10: + case 12: { std::cout << "GetRegisteredTopicList" << std::endl; auto nsTopics = NSProviderService::getInstance()->getRegisteredTopicList(); @@ -265,26 +345,28 @@ int main() } break; #ifdef WITH_CLOUD - case 11: + case 13: { - std::cout << "11. Enable NS Provider RemoteService" << std::endl; + std::cout << "Enable NS Provider RemoteService" << std::endl; std::cout << "Input the Server Address :"; std::cin >> REMOTE_SERVER_ADDRESS; NSProviderService::getInstance()->enableRemoteService(REMOTE_SERVER_ADDRESS); break; } - case 12: + case 14: { - std::cout << "12. Disable NS Provider RemoteService" << std::endl; + std::cout << "Disable NS Provider RemoteService" << std::endl; std::cout << "Input the Server Address :"; NSProviderService::getInstance()->disableRemoteService(REMOTE_SERVER_ADDRESS); break; } #endif - case 13: + case 15: + std::cout << "Stop the Notification Provider" << std::endl; NSProviderService::getInstance()->stop(); break; - case 14: + case 16: + std::cout << "Exit()" << std::endl; NSProviderService::getInstance()->stop(); isExit = true; break; -- 2.7.4