Dividing Cloud related services under separate Flag
[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 #include <cstring>\r
24 #include "NSCommon.h"\r
25 #include "NSProviderInterface.h"\r
26 #include "oic_string.h"\r
27 #include "NSConsumer.h"\r
28 #include "NSSyncInfo.h"\r
29 #include "NSConstants.h"\r
30 \r
31 namespace OIC\r
32 {\r
33     namespace Service\r
34     {\r
35         void onConsumerSubscribedCallback(::NSConsumer *consumer)\r
36         {\r
37             NS_LOG(DEBUG, "onConsumerSubscribedCallback - IN");\r
38             NSConsumer *nsConsumer = new NSConsumer(consumer);\r
39             if (NSProviderService::getInstance()->getProviderConfig().m_subscribeRequestCb != NULL)\r
40                 NSProviderService::getInstance()->getProviderConfig().m_subscribeRequestCb(nsConsumer);\r
41             delete nsConsumer;\r
42             NS_LOG(DEBUG, "onConsumerSubscribedCallback - OUT");\r
43         }\r
44 \r
45         void onMessageSynchronizedCallback(::NSSyncInfo *syncInfo)\r
46         {\r
47             NS_LOG(DEBUG, "onMessageSynchronizedCallback - IN");\r
48             NSSyncInfo *nsSyncInfo = new NSSyncInfo(syncInfo);\r
49             if (NSProviderService::getInstance()->getProviderConfig().m_syncInfoCb != NULL)\r
50                 NSProviderService::getInstance()->getProviderConfig().m_syncInfoCb(nsSyncInfo);\r
51             delete nsSyncInfo;\r
52             NS_LOG(DEBUG, "onMessageSynchronizedCallback - OUT");\r
53         }\r
54 \r
55         ::NSMessage *NSProviderService::getNSMessage(NSMessage *msg)\r
56         {\r
57             ::NSMessage *nsMsg = new ::NSMessage;\r
58             nsMsg->messageId = msg->getMessageId();\r
59             OICStrcpy(nsMsg->providerId, msg->getProviderId().length(), msg->getProviderId().c_str());\r
60             nsMsg->sourceName = OICStrdup(msg->getSourceName().c_str());\r
61             nsMsg->type = (::NSMessageType) msg->getType();\r
62             nsMsg->dateTime = OICStrdup(msg->getTime().c_str());\r
63             nsMsg->ttl = msg->getTTL();\r
64             nsMsg->title = OICStrdup(msg->getTitle().c_str());\r
65             nsMsg->contentText = OICStrdup(msg->getContentText().c_str());\r
66 \r
67             nsMsg->mediaContents = new ::NSMediaContents;\r
68             if (msg->getMediaContents() != nullptr)\r
69                 nsMsg->mediaContents->iconImage = OICStrdup(msg->getMediaContents()->getIconImage().c_str());\r
70             else\r
71                 nsMsg->mediaContents->iconImage = nullptr;\r
72             return nsMsg;\r
73         }\r
74 \r
75         NSProviderService *NSProviderService::getInstance()\r
76         {\r
77             static NSProviderService s_instance;\r
78             return &s_instance;\r
79         }\r
80 \r
81         Result NSProviderService::Start(NSProviderService::NSAccessPolicy policy,\r
82                                         NSProviderService::ProviderConfig config)\r
83         {\r
84             NS_LOG(DEBUG, "Start - IN");\r
85 \r
86             m_config = config;\r
87             Result result = (Result) NSStartProvider((::NSAccessPolicy)policy,\r
88                             onConsumerSubscribedCallback, onMessageSynchronizedCallback);\r
89             NS_LOG(DEBUG, "Start - OUT");\r
90             return result;\r
91         }\r
92 \r
93         Result NSProviderService::Stop()\r
94         {\r
95             NS_LOG(DEBUG, "Stop - IN");\r
96             Result result = (Result) NSStopProvider();\r
97             NS_LOG(DEBUG, "Stop - OUT");\r
98             return result;\r
99         }\r
100 \r
101         Result NSProviderService::EnableRemoteService(const std::string &serverAddress)\r
102         {\r
103             NS_LOG(DEBUG, "EnableRemoteService - IN");\r
104             Result result = Result::ERROR;\r
105 #ifdef WITH_CLOUD\r
106             result = (Result) NSProviderEnableRemoteService(OICStrdup(serverAddress.c_str()));\r
107 #else\r
108             NS_LOG(ERROR, "Remote Services feature is not enabled in the Build");\r
109 #endif\r
110             NS_LOG(DEBUG, "EnableRemoteService - OUT");\r
111             return result;\r
112         }\r
113 \r
114         Result NSProviderService::DisableRemoteService(const std::string &serverAddress)\r
115         {\r
116             NS_LOG(DEBUG, "DisableRemoteService - IN");\r
117             Result result = Result::ERROR;\r
118 #ifdef WITH_CLOUD\r
119             result = (Result) NSProviderDisableRemoteService(OICStrdup(serverAddress.c_str()));\r
120 #else\r
121             NS_LOG(ERROR, "Remote Services feature is not enabled in the Build");\r
122 #endif\r
123             NS_LOG(DEBUG, "DisableRemoteService - OUT");\r
124             return result;\r
125         }\r
126 \r
127         Result NSProviderService::SendMessage(NSMessage *msg)\r
128         {\r
129             NS_LOG(DEBUG, "SendMessage - IN");\r
130             Result result = Result::ERROR;\r
131             if (msg != nullptr)\r
132                 result = (Result) NSSendMessage(getNSMessage(msg));\r
133             else\r
134                 NS_LOG(DEBUG, "Empty Message");\r
135             NS_LOG(DEBUG, "SendMessage - OUT");\r
136             return result;\r
137         }\r
138 \r
139         void NSProviderService::SendSyncInfo(uint64_t messageId,\r
140                                              NSSyncInfo::NSSyncType type)\r
141         {\r
142             NS_LOG(DEBUG, "SendSyncInfo - IN");\r
143             NSProviderSendSyncInfo(messageId, (NSSyncType)type);\r
144             NS_LOG(DEBUG, "SendSyncInfo - OUT");\r
145             return;\r
146         }\r
147 \r
148         NSProviderService::ProviderConfig NSProviderService::getProviderConfig()\r
149         {\r
150             return m_config;\r
151         }\r
152     }\r
153 }\r