//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
\r
#include "NSProviderInterface.h"\r
-#include "NSQueueScheduler.h"\r
+#include "NSProviderScheduler.h"\r
#include "NSProviderListener.h"\r
+#include "NSCacheAdapter.h"\r
#include "cautilinterface.h"\r
+#include "NSProviderSubscription.h"\r
+#include "NSProviderNotification.h"\r
\r
-bool initSchedule = false;\r
+bool initProvider = false;\r
static NSSubscribeRequestCallback g_subscribeRequestCb = NULL;\r
static NSSyncCallback g_syncCb = NULL;\r
+pthread_mutex_t NSCacheMutex;\r
\r
void NSRegisterSubscribeRequestCb(NSSubscribeRequestCallback subscribeRequestCb)\r
{\r
g_subscribeRequestCb(consumer);\r
}\r
\r
-void NSSyncCb(NSProvider *provider, NSSync *sync)\r
+void NSSyncCb(NSSync *sync)\r
{\r
- g_syncCb(provider, sync);\r
+ g_syncCb(sync);\r
}\r
\r
NSResult NSStartProvider(NSAccessPolicy policy, NSSubscribeRequestCallback subscribeRequestCb,\r
\r
NSSetSubscriptionAcceptPolicy(policy);\r
\r
- if (!initSchedule)\r
+ if (!initProvider)\r
{\r
- initSchedule = true;\r
+ initProvider = true;\r
+\r
+ NSSetList();\r
NSInitScheduler();\r
NSStartScheduler();\r
}\r
return NS_OK;\r
}\r
\r
+void NSSetList()\r
+{\r
+ pthread_mutex_init(&NSCacheMutex, NULL);\r
+ NSInitSubscriptionList();\r
+ NSInitMessageList();\r
+}\r
+\r
NSResult NSStopProvider()\r
{\r
- NSRegisterSubscribeRequestCb(NULL);\r
- NSRegisterSyncCb(NULL);\r
- initSchedule = false;\r
+ NSRegisterSubscribeRequestCb((NSSubscribeRequestCallback)NULL);\r
+ NSRegisterSyncCb((NSSyncCallback)NULL);\r
+ initProvider = false;\r
return NS_OK;\r
}\r
\r
return NS_OK;\r
}\r
\r
-NSResult NSReadCheck(NSMessage *msg)\r
+NSResult NSProviderReadCheck(NSMessage *msg)\r
{\r
OIC_LOG(INFO, INTERFACE_TAG, "Read Sync");\r
\r
- NSTask * task = (NSTask*) OICMalloc(sizeof(NSTask));\r
- if (!task)\r
- {\r
- OIC_LOG(ERROR, LISTENER_TAG, PCF("Fail to allocate memory"));\r
- return NS_ERROR;\r
- }\r
-\r
- task->nextTask = NULL;\r
- task->taskData = msg;\r
- task->taskType = TASK_SEND_READ;\r
-\r
- NSPushQueue(NOTIFICATION_SCHEDULER, task->taskType, task);\r
+ NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_READ, msg);\r
\r
return NS_OK;\r
}\r
{\r
OIC_LOG(INFO, INTERFACE_TAG, "Response Acceptance");\r
\r
- NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_ALLOW, consumer);\r
+ if(accepted)\r
+ {\r
+ NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_ALLOW, consumer);\r
+ }\r
+ else\r
+ {\r
+ NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_DENY, consumer);\r
+ }\r
\r
return NS_OK;\r
}\r
\r
+/*\r
NSResult NSGetConsumerList(uint8_t *list, uint32_t size)\r
{\r
OIC_LOG(INFO, INTERFACE_TAG, "Get consumer list");\r
size = NSGetNumberOfObsList();\r
\r
return NS_OK;\r
-}\r
+}*/\r
\r
void * NSResponseSchedule(void * ptr)\r
{\r
if (ptr == NULL)\r
{\r
- OIC_LOG(ERROR, INTERFACE_TAG, "Fail to response to User");\r
+ OIC_LOG(INFO, INTERFACE_TAG, "Init NSResponseSchedule");\r
}\r
\r
while (NSIsRunning[RESPONSE_SCHEDULER])\r
printf("before - TASK_CB_SUBSCRIPTION :\n");\r
OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
NSConsumer consumer;\r
+\r
consumer.mId = strdup(request->devAddr.addr);\r
- int * obId = (int *) malloc (sizeof(int));\r
+ int * obId = (int *) OICMalloc(sizeof(int));\r
*obId = request->obsInfo.obsId;\r
consumer.mUserData = obId;\r
\r
case TASK_CB_SYNC:\r
{\r
NSSync * sync = (NSSync*)node->taskData;\r
- NSSyncCb(NULL, sync);\r
+ NSSyncCb(sync);\r
break;\r
}\r
default:\r