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 "NSConsumerInterface.h"
27 #include "NSConsumerCommon.h"
28 #include "NSConstants.h"
29 #include "NSConsumerQueueScheduler.h"
30 #include "oic_malloc.h"
33 NSResult NSStartConsumer(
34 NSProviderDiscoveredCallback discoverCb,
35 NSNotificationReceivedCallback postCb,
36 NSSyncCallback syncCb)
38 bool isStartedConsumer = NSIsStartedConsumer();
39 NS_VERTIFY_NOT_NULL(isStartedConsumer == false ? (void *) 1 : NULL, NS_OK);
41 NS_VERTIFY_NOT_NULL(discoverCb, NS_ERROR);
42 NS_VERTIFY_NOT_NULL(postCb, NS_ERROR);
43 NS_VERTIFY_NOT_NULL(syncCb, NS_ERROR);
45 NSSetDiscoverProviderCb(discoverCb);
46 NSSetNotificationPostedCb(postCb);
47 NSSetNotificationSyncCb(syncCb);
48 NSSetIsStartedConsumer(true);
50 NSResult ret = NSConsumerMessageHandlerInit();
51 NS_VERTIFY_NOT_NULL_WITH_POST_CLEANING(ret == NS_OK ? (void *) 1 : NULL,
52 NS_ERROR, NSStopConsumer());
57 NSResult NSStopConsumer()
59 NSSetDiscoverProviderCb(NULL);
60 NSSetNotificationPostedCb(NULL);
61 NSSetNotificationSyncCb(NULL);
62 NSSetIsStartedConsumer(false);
64 NSConsumerMessageHandlerExit();
69 NSResult NSSubscribe(NSProvider * provider)
71 NSTask * subscribeTask = NSMakeTask(TASK_CONSUMER_REQ_SUBSCRIBE, (void *) provider);
72 NS_VERTIFY_NOT_NULL(subscribeTask, NS_ERROR);
74 return NSConsumerPushEvent(subscribeTask);
77 NSResult NSUnsubscribe(NSProvider * provider)
79 NSTask * unsubscribeTask = NSMakeTask(TASK_CONSUMER_REQ_SUBSCRIBE_CANCEL, (void *) provider);
80 NS_VERTIFY_NOT_NULL(unsubscribeTask, NS_ERROR);
82 return NSConsumerPushEvent(unsubscribeTask);
85 NSResult NSRescanProvider()
87 NSTask * discoverTask = NSMakeTask(TASK_CONSUMER_REQ_DISCOVER, NULL);
88 NS_VERTIFY_NOT_NULL(discoverTask, NS_ERROR);
90 return NSConsumerPushEvent(discoverTask);
93 NSResult NSConsumerReadCheck(NSMessage * obj)
95 NSTask * readTask = NSMakeTask(TASK_SEND_READ, (void *) obj);
96 NS_VERTIFY_NOT_NULL(readTask, NS_ERROR);
98 return NSConsumerPushEvent(readTask);
101 NSResult NSConsumerDismissCheck(NSMessage * obj)
103 NSTask * dismissTask = NSMakeTask(TASK_SEND_DISMISS, (void *) obj);
104 NS_VERTIFY_NOT_NULL(dismissTask, NS_ERROR);
106 return NSConsumerPushEvent(dismissTask);
109 NSResult NSDropNSObject(NSMessage * obj)
111 NS_VERTIFY_NOT_NULL(obj, NS_ERROR);
124 if (obj->contentText)
126 OICFree(obj->contentText);
127 obj->contentText = NULL;
132 OICFree(obj->sourceName);
133 obj->sourceName = NULL;