#include "NSProviderScheduler.h"\r
#include "NSProviderListener.h"\r
#include "NSCacheAdapter.h"\r
-#include "cautilinterface.h"\r
#include "NSProviderSubscription.h"\r
#include "NSProviderNotification.h"\r
+#include "NSProviderMemoryCache.h"\r
+#include "oic_malloc.h"\r
+#include "oic_string.h"\r
+#include "cautilinterface.h"\r
\r
bool initProvider = false;\r
static NSSubscribeRequestCallback g_subscribeRequestCb = NULL;\r
static NSSyncCallback g_syncCb = NULL;\r
-pthread_mutex_t NSCacheMutex;\r
+\r
+pthread_mutex_t nsInitMutex;\r
+\r
+void initializeMutex()\r
+{\r
+ static pthread_mutex_t initMutex = PTHREAD_MUTEX_INITIALIZER;\r
+ nsInitMutex = initMutex;\r
+}\r
\r
void NSRegisterSubscribeRequestCb(NSSubscribeRequestCallback subscribeRequestCb)\r
{\r
{\r
OIC_LOG(INFO, INTERFACE_TAG, "Notification Service Start Provider..");\r
NS_LOG(DEBUG, "NSStartProvider - IN");\r
- NSSetSubscriptionAcceptPolicy(policy);\r
+\r
+ initializeMutex();\r
+\r
+ pthread_mutex_lock(&nsInitMutex);\r
\r
if (!initProvider)\r
{\r
NS_LOG(DEBUG, "Init Provider");\r
initProvider = true;\r
+ NSSetSubscriptionAcceptPolicy(policy);\r
+ NSRegisterSubscribeRequestCb(subscribeRequestCb);\r
+ NSRegisterSyncCb(syncCb);\r
+ CARegisterNetworkMonitorHandler(NSProviderAdapterStateListener,\r
+ NSProviderConnectionStateListener);\r
\r
NSSetList();\r
NSInitScheduler();\r
NSStartScheduler();\r
- }\r
\r
- NSRegisterSubscribeRequestCb(subscribeRequestCb);\r
- NSRegisterSyncCb(syncCb);\r
-\r
- CARegisterNetworkMonitorHandler(NSProviderAdapterStateListener,\r
- NSProviderConnectionStateListener);\r
+ NSPushQueue(DISCOVERY_SCHEDULER, TASK_START_PRESENCE, NULL);\r
+ NSPushQueue(DISCOVERY_SCHEDULER, TASK_REGISTER_RESOURCE, NULL);\r
+ }\r
+ else\r
+ {\r
+ NS_LOG(DEBUG, "Already started Notification Provider");\r
+ }\r
\r
- NSPushQueue(DISCOVERY_SCHEDULER, TASK_START_PRESENCE, NULL);\r
- NSPushQueue(DISCOVERY_SCHEDULER, TASK_REGISTER_RESOURCE, NULL);\r
+ pthread_mutex_unlock(&nsInitMutex);\r
\r
NS_LOG(DEBUG, "NSStartProvider - OUT");\r
\r
NSResult NSStopProvider()\r
{\r
NS_LOG(DEBUG, "NSStopProvider - IN");\r
+\r
+ pthread_mutex_lock(&nsInitMutex);\r
+\r
NSRegisterSubscribeRequestCb((NSSubscribeRequestCallback)NULL);\r
NSRegisterSyncCb((NSSyncCallback)NULL);\r
initProvider = false;\r
+\r
+ pthread_mutex_unlock(&nsInitMutex);\r
NS_LOG(DEBUG, "NSStopProvider - OUT");\r
return NS_OK;\r
}\r
{\r
NS_LOG(DEBUG, "accepted is true - ALLOW");\r
NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_ALLOW, consumer);\r
-\r
}\r
else\r
{\r
OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
NSConsumer consumer;\r
\r
- consumer.mId = strdup(request->devAddr.addr);\r
+ consumer.mId = OICStrdup(request->devAddr.addr);\r
int * obId = (int *) OICMalloc(sizeof(int));\r
*obId = request->obsInfo.obsId;\r
consumer.mUserData = obId;\r
default:\r
OIC_LOG(INFO, INTERFACE_TAG, "Response to User");\r
\r
- // TODO: NSSubscribeRequestCb\r
-\r
- // TODO: NSSyncCb\r
-\r
break;\r
-\r
}\r
OICFree(node);\r
}\r
if(msg != NULL)
{
- NS_LOG(ERROR, "NSMessage is valid");
- NotificationMessageResource.id = strdup(msg->mId);
- NotificationMessageResource.title = strdup(msg->mTitle);
- NotificationMessageResource.body = strdup(msg->mContentText);
+ NS_LOG(DEBUG, "NSMessage is valid");
+ NS_LOG_V(DEBUG, "msg -> mId : %s", msg->mId);
+ NS_LOG_V(DEBUG, "msg -> mTitle : %s", msg->mTitle);
+ NS_LOG_V(DEBUG, "msg -> mContentText : %s", msg->mContentText);
+
+ NotificationMessageResource.id = OICStrdup(msg->mId);
+ NotificationMessageResource.title = OICStrdup(msg->mTitle);
+ NotificationMessageResource.body = OICStrdup(msg->mContentText);
}
else
{