1 //******************************************************************
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "NSConsumerCommon.h"
22 #include "NSConstants.h"
24 #include "oic_malloc.h"
25 #include "oic_string.h"
27 #define NS_QUERY_CONSUMER_ID "consumerid"
29 char ** NSGetConsumerId()
31 static char * g_consumerId = NULL;
32 return & g_consumerId;
35 void NSSetConsumerId(char * cId)
37 NS_VERIFY_NOT_NULL_V(cId);
38 char ** consumerId = NSGetConsumerId();
39 NSOICFree(*consumerId);
40 *consumerId = (char *)OICMalloc(sizeof(char) * NS_DEVICE_ID_LENGTH);
41 NS_VERIFY_NOT_NULL_V(*consumerId);
43 OICStrcpy(*consumerId, sizeof(char) * NS_DEVICE_ID_LENGTH, cId);
46 char * NSMakeRequestUriWithConsumerId(const char * uri)
48 NS_VERIFY_NOT_NULL(uri, NULL);
50 char * consumerId = OICStrdup(*NSGetConsumerId());
51 NS_VERIFY_NOT_NULL(consumerId, NULL);
53 size_t uriLen = strlen(uri) + 1;
54 size_t qKeyLen = sizeof(NS_QUERY_CONSUMER_ID);
55 size_t queryLen = NS_DEVICE_ID_LENGTH + uriLen + qKeyLen + 2;
57 char * retQuery = (char *)OICMalloc(sizeof(char) * queryLen);
58 NS_VERIFY_NOT_NULL(retQuery, NULL);
61 OICStrcpy((retQuery + index), uriLen, uri);
63 OICStrcpy((retQuery + index), 2, "?");
65 OICStrcpy((retQuery + index), qKeyLen, NS_QUERY_CONSUMER_ID);
67 OICStrcpy((retQuery + index), 2, "=");
69 OICStrcpy((retQuery + index), NS_DEVICE_ID_LENGTH, consumerId);
71 NSOICFree(consumerId);
76 bool * NSGetBoneIsStartedConsumer()
78 static bool g_isStartedConsumer = false;
80 return & g_isStartedConsumer;
83 void NSSetIsStartedConsumer(bool setValue)
85 * NSGetBoneIsStartedConsumer() = setValue;
88 bool NSIsStartedConsumer()
90 return * NSGetBoneIsStartedConsumer();
93 NSProviderDiscoveredCallback * NSGetBoneDiscoverCb()
95 static NSProviderDiscoveredCallback g_discoverCb = NULL;
97 return & g_discoverCb;
100 void NSSetDiscoverProviderCb(NSProviderDiscoveredCallback cb)
102 * NSGetBoneDiscoverCb() = cb;
105 NSProviderDiscoveredCallback NSGetDiscoverCb()
107 return * NSGetBoneDiscoverCb();
110 void * NSDiscoveredProviderFunc(void * provider)
112 NSGetDiscoverCb()((NSProvider *) provider);
117 void NSDiscoveredProvider(NSProvider * provider)
119 NSConsumerThread * thread = NSThreadInit(NSDiscoveredProviderFunc, (void *) provider);
120 NS_VERIFY_NOT_NULL_V(thread);
123 NSSubscriptionAcceptedCallback * NSGetSubscriptionAcceptedCb()
125 static NSSubscriptionAcceptedCallback g_acceptCb = NULL;
130 void NSSetSubscriptionAcceptedCb(NSSubscriptionAcceptedCallback cb)
132 *(NSGetSubscriptionAcceptedCb()) = cb;
135 void NSSubscriptionAccepted(NSProvider * provider)
137 (*(NSGetSubscriptionAcceptedCb()))(provider);
140 NSSyncInfoReceivedCallback * NSGetBoneNotificationSyncCb()
142 static NSSyncInfoReceivedCallback g_syncCb = NULL;
147 void NSSetNotificationSyncCb(NSSyncInfoReceivedCallback cb)
149 * NSGetBoneNotificationSyncCb() = cb;
152 void * NSNotificationSyncFunc(void * obj)
154 (* NSGetBoneNotificationSyncCb())((NSSyncInfo *) obj);
158 void NSNotificationSync(NSSyncInfo * sync)
160 NS_VERIFY_NOT_NULL_V(sync);
161 NSConsumerThread * thread = NSThreadInit(NSNotificationSyncFunc, (void *) sync);
162 NS_VERIFY_NOT_NULL_V(thread);
165 NSMessageReceivedCallback * NSGetBoneMessagePostedCb()
167 static NSMessageReceivedCallback g_postCb = NULL;
172 void NSSetMessagePostedCb(NSMessageReceivedCallback cb)
174 * NSGetBoneMessagePostedCb() = cb;
177 NSMessageReceivedCallback NSGetMessagePostedCb()
179 return * NSGetBoneMessagePostedCb();
182 void * NSMessagePostFunc(void * obj)
184 NSGetMessagePostedCb()((NSMessage *) obj);
188 void NSMessagePost(NSMessage * msg)
190 NS_VERIFY_NOT_NULL_V(msg);
191 NSConsumerThread * thread = NSThreadInit(NSMessagePostFunc, (void *) msg);
192 NS_VERIFY_NOT_NULL_V(thread);
195 NSTask * NSMakeTask(NSTaskType type, void * data)
197 NSTask * retTask = OICMalloc(sizeof(NSTask));
198 NS_VERIFY_NOT_NULL(retTask, NULL);
200 retTask->taskType = type;
201 retTask->taskData = data;
202 retTask->nextTask = NULL;
207 NSMessage_consumer * NSCopyMessage(NSMessage_consumer * msg)
209 NS_VERIFY_NOT_NULL(msg, NULL);
211 NSMessage_consumer * newMsg = (NSMessage_consumer *)OICMalloc(sizeof(NSMessage_consumer));
212 NS_VERIFY_NOT_NULL(newMsg, NULL);
214 OICStrcpy(newMsg->providerId, NS_DEVICE_ID_LENGTH, msg->providerId);
215 newMsg->i_addr = (OCDevAddr *)OICMalloc(sizeof(OCDevAddr));
216 NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(newMsg, NULL, OICFree(newMsg));
217 memcpy(newMsg->i_addr, msg->i_addr, sizeof(OCDevAddr));
219 newMsg->messageId = msg->messageId;
220 newMsg->title = OICStrdup(msg->title);
221 newMsg->contentText = OICStrdup(msg->contentText);
222 newMsg->sourceName = OICStrdup(msg->sourceName);
226 void NSRemoveMessage(NSMessage_consumer * msg)
229 NSOICFree(msg->title);
230 NSOICFree(msg->contentText);
231 NSOICFree(msg->sourceName);
232 NSOICFree(msg->i_addr);
237 NSProvider_internal * NSCopyProvider(NSProvider_internal * prov)
239 NS_VERIFY_NOT_NULL(prov, NULL);
241 NSProvider_internal * newProv = (NSProvider_internal *)OICMalloc(sizeof(NSProvider_internal));
242 NS_VERIFY_NOT_NULL(newProv, NULL);
244 OICStrcpy(newProv->providerId, NS_DEVICE_ID_LENGTH, prov->providerId);
245 newProv->i_addr = (OCDevAddr *)OICMalloc(sizeof(OCDevAddr));
246 NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(newProv, NULL, OICFree(newProv));
247 memcpy(newProv->i_addr, prov->i_addr, sizeof(OCDevAddr));
249 newProv->messageUri = OICStrdup(prov->messageUri);
250 newProv->syncUri = OICStrdup(prov->syncUri);
251 newProv->i_messageHandle = prov->i_messageHandle;
252 newProv->i_syncHandle = prov->i_syncHandle;
253 newProv->accessPolicy = prov->accessPolicy;
257 void NSRemoveProvider(NSProvider_internal * prov)
259 NSOICFree(prov->messageUri);
260 NSOICFree(prov->syncUri);
261 NSOICFree(prov->i_messageHandle);
262 NSOICFree(prov->i_syncHandle);
263 NSOICFree(prov->i_addr);
268 OCStackResult NSInvokeRequest(OCDoHandle * handle,
269 OCMethod method, const OCDevAddr * addr,
270 const char * queryUrl, OCPayload * payload,
271 void * callbackFunc, void * callbackData)
273 OCCallbackData cbdata;
275 cbdata.cb = callbackFunc;
276 cbdata.context = callbackData;
279 return OCDoResource(handle, method, queryUrl, addr,
280 payload, CT_DEFAULT, NS_QOS, &cbdata, NULL, 0);