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 bool * NSGetBoneIsStartedConsumer()
29 static bool g_isStartedConsumer = false;
31 return & g_isStartedConsumer;
34 void NSSetIsStartedConsumer(bool setValue)
36 * NSGetBoneIsStartedConsumer() = setValue;
39 bool NSIsStartedConsumer()
41 return * NSGetBoneIsStartedConsumer();
44 NSProviderDiscoveredCallback * NSGetBoneDiscoverCb()
46 static NSProviderDiscoveredCallback g_discoverCb = NULL;
48 return & g_discoverCb;
51 void NSSetDiscoverProviderCb(NSProviderDiscoveredCallback cb)
53 * NSGetBoneDiscoverCb() = cb;
56 NSProviderDiscoveredCallback NSGetDiscoverCb()
58 return * NSGetBoneDiscoverCb();
61 void * NSDiscoveredProviderFunc(void * provider)
63 NSGetDiscoverCb()((NSProvider *) provider);
68 void NSDiscoveredProvider(NSProvider * provider)
70 NSConsumerThread * thread = NSThreadInit(NSDiscoveredProviderFunc, (void *) provider);
71 NS_VERTIFY_NOT_NULL_V(thread);
74 NSSyncCallback * NSGetBoneNotificationSyncCb()
76 static NSSyncCallback g_syncCb = NULL;
81 void NSSetNotificationSyncCb(NSSyncCallback cb)
83 * NSGetBoneNotificationSyncCb() = cb;
88 NSProvider * provider;
92 void * NSNotificationSyncFunc(void * obj)
94 NSProvider * provider = ((NSSyncData *) obj)->provider;
95 NSSyncInfo * syncData = ((NSSyncData *) obj)->sync;
96 (* NSGetBoneNotificationSyncCb())(provider, syncData);
100 void NSNotificationSync(NSProvider * provider, NSSyncInfo * sync)
102 NSSyncData * obj = (NSSyncData *)OICMalloc(sizeof(NSSyncData));
103 NS_VERTIFY_NOT_NULL_V(obj);
104 obj->provider = provider;
107 NSConsumerThread * thread = NSThreadInit(NSNotificationSyncFunc, (void *) obj);
108 NS_VERTIFY_NOT_NULL_V(thread);
111 NSNotificationReceivedCallback * NSGetBoneNotificationPostedCb()
113 static NSNotificationReceivedCallback g_postCb = NULL;
118 void NSSetNotificationPostedCb(NSNotificationReceivedCallback cb)
120 * NSGetBoneNotificationPostedCb() = cb;
123 NSNotificationReceivedCallback NSGetNotificationPostedCb()
125 return * NSGetBoneNotificationPostedCb();
130 NSProvider * provider;
134 void * NSNotificationPostFunc(void * obj)
136 NSMessageData * msgData = (NSMessageData *) obj;
138 NSGetNotificationPostedCb()((NSProvider *) msgData->provider,
139 (NSMessage *) msgData->msg);
143 void NSNotificationPost(NSProvider * provider, NSMessage * msg)
145 NSMessageData * obj = (NSMessageData *)OICMalloc(sizeof(NSMessageData));
146 NS_VERTIFY_NOT_NULL_V(obj);
147 obj->provider = provider;
150 NSConsumerThread * thread = NSThreadInit(NSNotificationPostFunc, (void *) obj);
151 NS_VERTIFY_NOT_NULL_V(thread);
154 NSTask * NSMakeTask(NSTaskType type, void * data)
156 NSTask * retTask = OICMalloc(sizeof(NSTask));
157 NS_VERTIFY_NOT_NULL(retTask, NULL);
159 retTask->taskType = type;
160 retTask->taskData = data;
161 retTask->nextTask = NULL;
166 NSMessage_consumer * NSCopyMessage(NSMessage_consumer * msg)
168 NS_VERTIFY_NOT_NULL(msg, NULL);
170 NSMessage_consumer * newMsg = (NSMessage_consumer *)OICMalloc(sizeof(NSMessage_consumer));
171 NS_VERTIFY_NOT_NULL(newMsg, NULL);
173 newMsg->addr = (OCDevAddr *)OICMalloc(sizeof(OCDevAddr));
174 NS_VERTIFY_NOT_NULL_WITH_POST_CLEANING(newMsg, NULL, OICFree(newMsg));
175 memcpy(newMsg->addr, msg->addr, sizeof(OCDevAddr));
177 newMsg->messageId = msg->messageId;
178 newMsg->title = OICStrdup(msg->title);
179 newMsg->contentText = OICStrdup(msg->contentText);
180 newMsg->sourceName = OICStrdup(msg->sourceName);
184 void NSRemoveMessage(NSMessage_consumer * msg)
195 if (msg->contentText)
197 OICFree(msg->contentText);
198 msg->contentText = NULL;
202 OICFree(msg->sourceName);
203 msg->sourceName = NULL;
215 OCStackResult NSInvokeRequest(OCDoHandle * handle,
216 OCMethod method, const OCDevAddr * addr,
217 const char * queryUrl, OCPayload * payload,
218 void * callbackFunc, void * callbackData)
220 OCCallbackData cbdata;
222 cbdata.cb = callbackFunc;
223 cbdata.context = callbackData;
226 return OCDoResource(handle, method, queryUrl, addr,
227 payload, CT_DEFAULT, NS_QOS, &cbdata, NULL, 0);