1 //******************************************************************
\r
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
\r
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\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
11 // http://www.apache.org/licenses/LICENSE-2.0
\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
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
\r
21 #include "NSProviderListener.h"
\r
23 OCEntityHandlerResult NSEntityHandlerNotificationCb(OCEntityHandlerFlag flag,
\r
24 OCEntityHandlerRequest *entityHandlerRequest, void* callback)
\r
26 NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - IN");
\r
28 OCEntityHandlerResult ehResult = OC_EH_OK;
\r
32 if (!entityHandlerRequest)
\r
34 NS_LOG(ERROR, "Invalid request pointer");
\r
38 if (flag & OC_REQUEST_FLAG)
\r
40 NS_LOG(DEBUG, "Flag includes OC_REQUEST_FLAG");
\r
42 if (OC_REST_GET == entityHandlerRequest->method)
\r
44 NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - OC_REST_GET");
\r
46 NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_POLICY,
\r
47 NSCopyOCEntityHandlerRequest(entityHandlerRequest));
\r
52 NS_LOG_V (DEBUG, "Received method %d from client", entityHandlerRequest->method);
\r
56 NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - OUT");
\r
60 OCEntityHandlerResult NSEntityHandlerMessageCb(OCEntityHandlerFlag flag,
\r
61 OCEntityHandlerRequest *entityHandlerRequest, void* callback)
\r
63 NS_LOG(DEBUG, "NSEntityHandlerMessageCb - IN");
\r
65 OCEntityHandlerResult ehResult = OC_EH_OK;
\r
69 if (!entityHandlerRequest)
\r
71 NS_LOG (ERROR,"Invalid request pointer");
\r
75 if (flag & OC_REQUEST_FLAG)
\r
77 NS_LOG(DEBUG, "Flag includes OC_REQUEST_FLAG");
\r
78 NS_LOG_V(DEBUG, "Received method %d from client", entityHandlerRequest->method);
\r
81 if (flag & OC_OBSERVE_FLAG)
\r
83 NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_OBSERVE_FLAG");
\r
85 OCObserveAction ocObAction = entityHandlerRequest->obsInfo.action;
\r
87 if (ocObAction == OC_OBSERVE_REGISTER)
\r
89 NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_OBSERVE_REGISTER");
\r
90 NS_LOG_V(DEBUG, "NSEntityHandlerMessageCb\n"
\r
91 "Register message observerID : %d\n", entityHandlerRequest->obsInfo.obsId);
\r
92 NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_RECV_SUBSCRIPTION,
\r
93 NSCopyOCEntityHandlerRequest(entityHandlerRequest));
\r
95 else if(ocObAction == OC_OBSERVE_DEREGISTER)
\r
97 NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_OBSERVE_DEREGISTER");
\r
98 NS_LOG_V(DEBUG, "NSEntityHandlerMessageCb\n - "
\r
99 "Deregister Message observerID : %d\n", entityHandlerRequest->obsInfo.obsId);
\r
100 NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_RECV_UNSUBSCRIPTION,
\r
101 NSCopyOCEntityHandlerRequest(entityHandlerRequest));
\r
105 NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OUT");
\r
109 OCEntityHandlerResult NSEntityHandlerSyncCb(OCEntityHandlerFlag flag,
\r
110 OCEntityHandlerRequest *entityHandlerRequest, void* callback)
\r
112 NS_LOG(DEBUG, "NSEntityHandlerSyncCb - IN");
\r
113 OCEntityHandlerResult ehResult = OC_EH_OK;
\r
117 if (!entityHandlerRequest)
\r
119 NS_LOG(ERROR, "Invalid request pointer");
\r
120 return OC_EH_ERROR;
\r
123 if (flag & OC_REQUEST_FLAG)
\r
125 NS_LOG(DEBUG, "Flag includes OC_REQUEST_FLAG");
\r
127 if (OC_REST_POST == entityHandlerRequest->method)
\r
129 /** Receive sync data from consumer which read or dismiss notification message.
\r
130 And broadcast the sync data to all subscribers including provider app
\r
131 to synchronize the notification message status. */
\r
133 NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_REST_POST");
\r
135 NSPushQueue(NOTIFICATION_SCHEDULER, TASK_RECV_READ,
\r
136 NSGetSyncInfo(entityHandlerRequest->payload));
\r
140 NS_LOG_V(DEBUG, "Received method %d from client", entityHandlerRequest->method);
\r
143 if (flag & OC_OBSERVE_FLAG)
\r
145 /** Requested by consumers to synchronize notification message status.
\r
146 Store the observer IDs to storage or cache */
\r
148 NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_OBSERVE_FLAG");
\r
150 OCObserveAction ocObAction = entityHandlerRequest->obsInfo.action;
\r
152 if (ocObAction == OC_OBSERVE_REGISTER)
\r
154 NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_OBSERVE_REGISTER");
\r
155 NS_LOG_V(DEBUG, "NSEntityHandlerSyncCb\n - "
\r
156 "Register Sync observerID : %d\n", entityHandlerRequest->obsInfo.obsId);
\r
157 NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SYNC_SUBSCRIPTION,
\r
158 NSCopyOCEntityHandlerRequest(entityHandlerRequest));
\r
160 else if(ocObAction == OC_OBSERVE_DEREGISTER)
\r
162 NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_OBSERVE_DEREGISTER");
\r
163 NS_LOG_V(DEBUG, "NSEntityHandlerSyncCb\n - "
\r
164 "Deregister Sync observerID : %d\n", entityHandlerRequest->obsInfo.obsId);
\r
165 NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_RECV_UNSUBSCRIPTION,
\r
166 NSCopyOCEntityHandlerRequest(entityHandlerRequest));
\r
170 NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OUT");
\r
174 void NSProviderConnectionStateListener(const CAEndpoint_t * info, bool connected)
\r
177 NS_LOG(DEBUG, "NSProviderConnectionStateListener - IN");
\r
181 NS_LOG(DEBUG, "CONNECTED");
\r
183 // Set Connection State
\r
184 NSSetProviderConnectionState(CONNECTED);
\r
187 NSPushQueue(DISCOVERY_SCHEDULER, TASK_START_PRESENCE, NULL);
\r
189 if(info->adapter == CA_ADAPTER_TCP)
\r
191 NS_LOG_V(DEBUG, "TCP Connected remote address: %s:%d", info->addr, info->port);
\r
197 NS_LOG(DEBUG, "DISCONNECTED");
\r
199 // Set Connection State
\r
200 NSSetProviderConnectionState(DISCONNECTED);
\r
202 if(info->adapter == CA_ADAPTER_TCP)
\r
204 NS_LOG_V(DEBUG, "TCP Disconnected remote address: %s:%d", info->addr, info->port);
\r
208 NS_LOG(DEBUG, "NSProviderConnectionStateListener - OUT");
\r
211 void NSProviderAdapterStateListener(CATransportAdapter_t adapter, bool enabled)
\r
215 NS_LOG(DEBUG, "NSProviderAdapterStateListener - IN");
\r
219 NS_LOG(DEBUG, "CONNECTED");
\r
221 // Set Connection State
\r
222 NSSetProviderConnectionState(CONNECTED);
\r
225 NSPushQueue(DISCOVERY_SCHEDULER, TASK_START_PRESENCE, NULL);
\r
230 NS_LOG(DEBUG, "DISCONNECTED");
\r
232 // Set Connection State
\r
233 NSSetProviderConnectionState(DISCONNECTED);
\r
236 NS_LOG(DEBUG, "NSProviderAdapterStateListener - OUT");
\r