Merge branch 'cloud-interface'
[platform/upstream/iotivity.git] / service / notification / cpp-wrapper / provider / src / NSProviderService.cpp
1 //******************************************************************\r
2 //\r
3 // Copyright 2016 Samsung Electronics All Rights Reserved.\r
4 //\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
6 //\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
10 //\r
11 //      http://www.apache.org/licenses/LICENSE-2.0\r
12 //\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
18 //\r
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
20 \r
21 \r
22 #include "NSProviderService.h"\r
23 \r
24 namespace OIC\r
25 {\r
26     namespace Service\r
27     {\r
28         void onConsumerSubscribedCallback(::NSConsumer *consumer)\r
29         {\r
30             NS_LOG(DEBUG, "onConsumerSubscribedCallback - IN");\r
31             NSConsumer *nsConsumer = new NSConsumer(consumer);\r
32             if (NSProviderService::getInstance()->getProviderConfig().m_subscribeRequestCb != NULL)\r
33                 NSProviderService::getInstance()->getProviderConfig().m_subscribeRequestCb(nsConsumer);\r
34             delete nsConsumer;\r
35             NS_LOG(DEBUG, "onConsumerSubscribedCallback - OUT");\r
36         }\r
37 \r
38         void onMessageSynchronizedCallback(::NSSyncInfo *syncInfo)\r
39         {\r
40             NS_LOG(DEBUG, "onMessageSynchronizedCallback - IN");\r
41             NSSyncInfo *nsSyncInfo = new NSSyncInfo(syncInfo);\r
42             if (NSProviderService::getInstance()->getProviderConfig().m_syncInfoCb != NULL)\r
43                 NSProviderService::getInstance()->getProviderConfig().m_syncInfoCb(nsSyncInfo);\r
44             delete nsSyncInfo;\r
45             NS_LOG(DEBUG, "onMessageSynchronizedCallback - OUT");\r
46         }\r
47 \r
48         ::NSMessage *NSProviderService::getNSMessage(NSMessage *msg)\r
49         {\r
50             ::NSMessage *nsMsg = new ::NSMessage;\r
51             nsMsg->messageId = msg->getMessageId();\r
52             OICStrcpy(nsMsg->providerId, msg->getProviderId().length(), msg->getProviderId().c_str());\r
53             nsMsg->sourceName = OICStrdup(msg->getSourceName().c_str());\r
54             nsMsg->type = (::NSMessageType) msg->getType();\r
55             nsMsg->dateTime = OICStrdup(msg->getTime().c_str());\r
56             nsMsg->ttl = msg->getTTL();\r
57             nsMsg->title = OICStrdup(msg->getTitle().c_str());\r
58             nsMsg->contentText = OICStrdup(msg->getContentText().c_str());\r
59 \r
60             nsMsg->mediaContents = new ::NSMediaContents;\r
61             if (msg->getMediaContents() != nullptr)\r
62                 nsMsg->mediaContents->iconImage = OICStrdup(msg->getMediaContents()->getIconImage().c_str());\r
63             else\r
64                 nsMsg->mediaContents->iconImage = nullptr;\r
65             return nsMsg;\r
66         }\r
67 \r
68         NSProviderService *NSProviderService::getInstance()\r
69         {\r
70             static NSProviderService s_instance;\r
71             return &s_instance;\r
72         }\r
73 \r
74         NSResult NSProviderService::Start(NSProviderService::NSAccessPolicy policy,\r
75                                           NSProviderService::ProviderConfig config)\r
76         {\r
77             NS_LOG(DEBUG, "Start - IN");\r
78 \r
79             m_config = config;\r
80             NSResult result = NSStartProvider((::NSAccessPolicy)policy, onConsumerSubscribedCallback,\r
81                                               onMessageSynchronizedCallback);\r
82             NS_LOG(DEBUG, "Start - OUT");\r
83             return result;\r
84         }\r
85 \r
86         NSResult NSProviderService::Stop()\r
87         {\r
88             NS_LOG(DEBUG, "Stop - IN");\r
89             NSResult result = NSStopProvider();\r
90             NS_LOG(DEBUG, "Stop - OUT");\r
91             return result;\r
92         }\r
93 \r
94         NSResult NSProviderService::EnableRemoteService(const std::string &serverAddress)\r
95         {\r
96             NS_LOG(DEBUG, "EnableRemoteService - IN");\r
97             NSResult result = NSProviderEnableRemoteService(OICStrdup(serverAddress.c_str()));\r
98             NS_LOG(DEBUG, "EnableRemoteService - OUT");\r
99             return result;\r
100         }\r
101 \r
102         NSResult NSProviderService::DisableRemoteService(const std::string &serverAddress)\r
103         {\r
104             NS_LOG(DEBUG, "DisableRemoteService - IN");\r
105             NSResult result = NSProviderDisableRemoteService(OICStrdup(serverAddress.c_str()));\r
106             NS_LOG(DEBUG, "DisableRemoteService - OUT");\r
107             return result;\r
108         }\r
109 \r
110         NSResult NSProviderService::SendMessage(NSMessage *msg)\r
111         {\r
112             NS_LOG(DEBUG, "SendMessage - IN");\r
113             NSResult result = NS_ERROR;\r
114             if (msg != nullptr)\r
115                 result = NSSendMessage(getNSMessage(msg));\r
116             else\r
117                 NS_LOG(DEBUG, "Empty Message");\r
118             NS_LOG(DEBUG, "SendMessage - OUT");\r
119             return result;\r
120         }\r
121 \r
122         void NSProviderService::SendSyncInfo(uint64_t messageId,\r
123                                              NSSyncInfo::NSSyncType type)\r
124         {\r
125             NS_LOG(DEBUG, "SendSyncInfo - IN");\r
126             NSProviderSendSyncInfo(messageId, (NSSyncType)type);\r
127             NS_LOG(DEBUG, "SendSyncInfo - OUT");\r
128             return;\r
129         }\r
130 \r
131         NSProviderService::ProviderConfig NSProviderService::getProviderConfig()\r
132         {\r
133             return m_config;\r
134         }\r
135     }\r
136 }\r