1 //******************************************************************
\r
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\r
7 // Licensed under the Apache License, Version 2.0 (the "License");
\r
8 // you may not use this file except in compliance with the License.
\r
9 // You may obtain a copy of the License at
\r
11 // http://www.apache.org/licenses/LICENSE-2.0
\r
13 // Unless required by applicable law or agreed to in writing, software
\r
14 // distributed under the License is distributed on an "AS IS" BASIS,
\r
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 // See the License for the specific language governing permissions and
\r
17 // limitations under the License.
\r
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\r
21 #include "NSConsumerService.h"
\r
22 #include "NSProvider.h"
\r
23 #include "NSMessage.h"
\r
29 void onNSProviderDiscovered(::NSProvider *provider)
\r
31 NS_LOG(DEBUG, "onNSProviderDiscovered - IN");
\r
32 NSProvider *nsProvider = new NSProvider(provider);
\r
33 if (NSConsumerService::getInstance()->getConsumerConfig().m_discoverCb != NULL)
\r
34 NSConsumerService::getInstance()->getConsumerConfig().m_discoverCb(nsProvider);
\r
36 NS_LOG(DEBUG, "onNSProviderDiscovered - OUT");
\r
39 void onNSAccepted(::NSProvider *provider)
\r
41 NS_LOG(DEBUG, "onNSAccepted - IN");
\r
42 NSProvider *nsProvider = new NSProvider(provider);
\r
43 NSConsumerService::getInstance()->getAcceptedProviders().push_back(nsProvider);
\r
45 if (NSConsumerService::getInstance()->getConsumerConfig().m_acceptedCb != NULL)
\r
46 NSConsumerService::getInstance()->getConsumerConfig().m_acceptedCb(nsProvider);
\r
47 NS_LOG(DEBUG, "onNSAccepted - OUT");
\r
50 void onNSMessageReceived(::NSMessage *message)
\r
52 NS_LOG(DEBUG, "onNSMessageReceived - IN");
\r
53 NSMessage *nsMessage = new NSMessage(message);
\r
54 for (auto it : NSConsumerService::getInstance()->getAcceptedProviders())
\r
56 if (it->getProviderId() == nsMessage->getProviderId())
\r
58 auto callback = it->getMessageReceivedCb();
\r
59 if (callback != NULL)
\r
61 callback(nsMessage);
\r
67 NS_LOG(DEBUG, "onNSMessageReceived - OUT");
\r
70 void onNSSyncInfoReceived(::NSSyncInfo *syncInfo)
\r
72 NS_LOG(DEBUG, "onNSSyncInfoReceived - IN");
\r
73 NSSyncInfo *nsSyncInfo = new NSSyncInfo(syncInfo);
\r
74 for (auto it : NSConsumerService::getInstance()->getAcceptedProviders())
\r
76 if (it->getProviderId() == nsSyncInfo->getProviderId())
\r
78 auto callback = it->getSyncInfoReceivedCb();
\r
79 if (callback != NULL)
\r
81 callback(nsSyncInfo);
\r
87 NS_LOG(DEBUG, "onNSSyncInfoReceived - OUT");
\r
90 NSConsumerService::NSConsumerService()
\r
92 m_config.m_discoverCb = NULL;
\r
93 m_config.m_acceptedCb = NULL;
\r
96 NSConsumerService::~NSConsumerService()
\r
98 for (auto it : getAcceptedProviders())
\r
102 getAcceptedProviders().clear();
\r
104 NSConsumerService *NSConsumerService::getInstance()
\r
106 static NSConsumerService s_instance;
\r
107 return &s_instance;
\r
110 void NSConsumerService::Start(NSConsumerService::ConsumerConfig config)
\r
112 NS_LOG(DEBUG, "Start - IN");
\r
114 NSConsumerConfig nsConfig;
\r
115 nsConfig.discoverCb = onNSProviderDiscovered;
\r
116 nsConfig.acceptedCb = onNSAccepted;
\r
117 nsConfig.messageCb = onNSMessageReceived;
\r
118 nsConfig.syncInfoCb = onNSSyncInfoReceived;
\r
120 NSStartConsumer(nsConfig);
\r
121 NS_LOG(DEBUG, "Start - OUT");
\r
125 void NSConsumerService::Stop()
\r
127 NS_LOG(DEBUG, "Stop - IN");
\r
129 NS_LOG(DEBUG, "Stop - OUT");
\r
133 NSResult NSConsumerService::EnableRemoteService(const std::string &serverAddress)
\r
135 NS_LOG(DEBUG, "EnableRemoteService - IN");
\r
136 NSResult result = NSConsumerEnableRemoteService(OICStrdup(serverAddress.c_str()));
\r
137 NS_LOG(DEBUG, "EnableRemoteService - OUT");
\r
141 void NSConsumerService::RescanProvider()
\r
143 NS_LOG(DEBUG, "RescanProvider - IN");
\r
144 NSRescanProvider();
\r
145 NS_LOG(DEBUG, "RescanProvider - OUT");
\r
149 NSProvider *NSConsumerService::getProvider(const std::string &id)
\r
151 for (auto it : getAcceptedProviders())
\r
153 if (it->getProviderId() == id)
\r
159 NSConsumerService::ConsumerConfig NSConsumerService::getConsumerConfig()
\r
164 std::list<NSProvider *> NSConsumerService::getAcceptedProviders()
\r
166 return m_acceptedProviders;
\r