}\r
}\r
\r
- LOGI("consumer ID : %s\n", consumer->mId);\r
- jstring consumerId = (*env)->NewStringUTF(env, consumer->mId);\r
+ LOGI("consumer ID : %s\n", consumer->mDeviceId);\r
+ jstring consumerId = (*env)->NewStringUTF(env, consumer->mDeviceId);\r
\r
jclass cls = (*env)->GetObjectClass(env, g_obj_subscriptionListener);\r
if (!cls)\r
void subscribeRequestCallback(NSConsumer *consumer)\r
{\r
OIC_LOG(INFO, TAG, "consumer requested to subscribe");\r
- char *cid = consumer->mId;\r
\r
- printf("NS_ Consumer ID: %s\n", cid);\r
+ printf("NS_APP Consumer Address ID: %s\n", consumer->mAddress);\r
+ printf("NS_APP Consumer Device ID: %s\n", consumer->mDeviceId);\r
\r
NSAccept(consumer, true);\r
}\r
{\r
OIC_LOG(INFO, TAG, "sync requested");\r
\r
- printf("NS_ Sync State: %d\n", sync->mState);\r
+ printf("NS_APP Sync State: %d\n", sync->mState);\r
}\r
\r
int main()\r
\r
pthread_create(&processThread, NULL, OCProcessThread, NULL);\r
\r
- while (true)\r
+ while (!isExit)\r
{\r
char dummy;\r
\r
printf("2. NSStartProvider(Accepter: Consumer) \n");\r
printf("3. NSSendNotification() \n");\r
printf("4. NSRead \n");\r
- //printf("5. NSAccept \n");\r
+ printf("5. NSStopProvider() \n");\r
printf("6. NSGetConsumerList \n");\r
//printf("7. startPresence \n");\r
//printf("8. stopPresence \n");\r
printf("input : ");\r
\r
scanf("%d", &num);\r
+ fflush(stdin);\r
scanf("%c", &dummy);\r
fflush(stdin);\r
\r
printf("body : ");\r
gets(body);\r
\r
- printf("app - mId : %d \n", charID);\r
+ printf("app - mId : %s \n", charID);\r
printf("app - mTitle : %s \n", title);\r
printf("app - mContentText : %s \n", body);\r
\r
msg->mId = strdup(charID);\r
msg->mTitle = strdup(title);\r
msg->mContentText = OICStrdup(body);\r
+ msg->mSource = NULL;\r
\r
NSSendNotification(msg);\r
\r
sync->mState = 1;\r
\r
break;\r
-/*\r
- case 5:\r
- OIC_LOG(INFO, TAG, "NSAccept");\r
-\r
- NSConsumer * consumer = (NSConsumer *)malloc(sizeof(NSConsumer));\r
- consumer->mId = strdup("dev_001");\r
- consumer->mUserData = NULL;\r
- bool accepted = true;\r
-\r
- NSAccept(consumer, accepted);\r
-\r
- break;*/\r
\r
+ case 5:\r
+ NSStopProvider();\r
+ break;\r
case 6:\r
OIC_LOG(INFO, TAG, "NSGetConsumerList");\r
-\r
- /*\r
- NSConsumer *list = NULL;\r
- int numberOfList;\r
-\r
- NSGetConsumerList(list, numberOfList);\r
-\r
- if(list != NULL)\r
- {\r
- OIC_LOG(INFO, TAG, "Consumer list");\r
- }\r
- else\r
- {\r
- OIC_LOG(INFO, TAG, "No Consumer list");\r
- }\r
- */\r
break;\r
case 7:\r
OIC_LOG(INFO, TAG, "NSStartPresence - not working");\r
OIC_LOG(INFO, TAG, "NSStopPresence- not working");\r
//NSTestStopPresence();\r
break;\r
+ case 0:\r
+ NSStopProvider();\r
+ isExit = true;\r
+ break;\r
default:\r
OIC_LOG(INFO, TAG, "Under Construction");\r
break;\r
} NSSyncTypes;
/**
- * Device information
+ * Consumer information
*/
typedef struct
{
- char * mId;
- void * mUserData;
+ char * mDeviceId;
+ char * mAddress;
-} NSDevice;
-
-/**
- * Consumer information is same to device information
- */
-typedef NSDevice NSConsumer;
+} NSConsumer;
/**
* Provider information
{
// Mandatory
char * mMessageId;
+ char * mSourceId; // TO-DO from whom
NSSyncTypes mState;
- //Optional
- NSDevice * mDevice;
-
} NSSync;
#endif /* _NS_COMMON_H_ */
#include "NSUtil.h"
+OCEntityHandlerRequest *NSCopyOCEntityHandlerRequest(OCEntityHandlerRequest *entityHandlerRequest)
+{
+ NS_LOG(DEBUG, "NSCopyOCEntityHandlerRequest - IN");
+
+ OCEntityHandlerRequest *copyOfRequest =
+ (OCEntityHandlerRequest *)OICMalloc(sizeof(OCEntityHandlerRequest));
+
+ if (copyOfRequest)
+ {
+ // Do shallow copy
+ memcpy(copyOfRequest, entityHandlerRequest, sizeof(OCEntityHandlerRequest));
+
+
+ if (copyOfRequest->query)
+ {
+ copyOfRequest->query = OICStrdup(entityHandlerRequest->query);
+ if(!copyOfRequest->query)
+ {
+ NS_LOG(ERROR, "Copy failed due to allocation failure");
+ OICFree(copyOfRequest);
+ return NULL;
+ }
+ }
+
+ if (entityHandlerRequest->payload)
+ {
+ copyOfRequest->payload = (OCPayload *)
+ (OCRepPayloadClone ((OCRepPayload*) entityHandlerRequest->payload));
+ }
+
+ // Ignore vendor specific header options for example
+ copyOfRequest->numRcvdVendorSpecificHeaderOptions = 0;
+ copyOfRequest->rcvdVendorSpecificHeaderOptions = NULL;
+ }
+
+ if (copyOfRequest)
+ {
+ NS_LOG(DEBUG, "Copied client request");
+ }
+ else
+ {
+ NS_LOG(DEBUG, "Error copying client request");
+ }
+
+ NS_LOG(DEBUG, "NSCopyOCEntityHandlerRequest - OUT");
+
+ return copyOfRequest;
+}
+
+NSResult NSFreeOCEntityHandlerRequest(OCEntityHandlerRequest * entityHandlerRequest)
+{
+ NS_LOG(DEBUG, "NSFreeOCEntityHandlerRequest - IN");
+
+ OICFree(entityHandlerRequest->query);
+ OCPayloadDestroy(entityHandlerRequest->payload);
+ OICFree(entityHandlerRequest);
+
+ NS_LOG(DEBUG, "NSFreeOCEntityHandlerRequest - OUT");
+
+ return NS_OK;
+}
+
NSResult NSFreeMessage(NSMessage * obj)
{
if (!obj)
}
newMsg = (NSMessage *)OICMalloc(sizeof(NSMessage));
+ newMsg->mContentText = NULL;
+ newMsg->mId = NULL;
+ newMsg->mSource = NULL;
+ newMsg->mTitle = NULL;
if (copyMsg->mId)
{
return newMsg;
}
-OCEntityHandlerRequest *NSCopyOCEntityHandlerRequest(OCEntityHandlerRequest *entityHandlerRequest)
+NSResult NSFreeSync(NSSync * obj)
{
- NS_LOG(DEBUG, "NSCopyOCEntityHandlerRequest - IN");
+ if (!obj)
+ {
+ return NS_ERROR;
+ }
- OCEntityHandlerRequest *copyOfRequest =
- (OCEntityHandlerRequest *)OICMalloc(sizeof(OCEntityHandlerRequest));
+ if (obj->mMessageId)
+ {
+ OICFree(obj->mMessageId);
+ obj->mMessageId = NULL;
+ }
- if (copyOfRequest)
+ if (obj->mSourceId)
{
- // Do shallow copy
- memcpy(copyOfRequest, entityHandlerRequest, sizeof(OCEntityHandlerRequest));
+ OICFree(obj->mSourceId);
+ obj->mSourceId = NULL;
+ }
+ OICFree(obj);
- if (copyOfRequest->query)
- {
- copyOfRequest->query = OICStrdup(entityHandlerRequest->query);
- if(!copyOfRequest->query)
- {
- NS_LOG(ERROR, "Copy failed due to allocation failure");
- OICFree(copyOfRequest);
- return NULL;
- }
- }
+ return NS_OK;
+}
- if (entityHandlerRequest->payload)
- {
- copyOfRequest->payload = (OCPayload *)
- (OCRepPayloadClone ((OCRepPayload*) entityHandlerRequest->payload));
- }
+NSSync* NSDuplicateSync(NSSync * copyMsg)
+{
+ NSSync * newMsg = NULL;
- // Ignore vendor specific header options for example
- copyOfRequest->numRcvdVendorSpecificHeaderOptions = 0;
- copyOfRequest->rcvdVendorSpecificHeaderOptions = NULL;
+ if(copyMsg == NULL)
+ {
+ NS_LOG(ERROR, "Copy Msg is NULL");
+ return NULL;
}
- if (copyOfRequest)
+ newMsg = (NSSync *)OICMalloc(sizeof(NSSync));
+ newMsg->mMessageId = NULL;
+ newMsg->mSourceId = NULL;
+ newMsg->mState = -1;
+
+ if (copyMsg->mMessageId)
{
- NS_LOG(DEBUG, "Copied client request");
+ newMsg->mMessageId = OICStrdup(copyMsg->mMessageId);
}
- else
+
+ if (copyMsg->mSourceId)
{
- NS_LOG(DEBUG, "Error copying client request");
+ newMsg->mSourceId = OICStrdup(copyMsg->mSourceId);
}
- NS_LOG(DEBUG, "NSCopyOCEntityHandlerRequest - OUT");
-
- return copyOfRequest;
+ return newMsg;
}
-NSResult NSFreeOCEntityHandlerRequest(OCEntityHandlerRequest * entityHandlerRequest)
+NSResult NSFreeConsumer(NSConsumer * obj)
{
- NS_LOG(DEBUG, "NSFreeOCEntityHandlerRequest - IN");
+ if (!obj)
+ {
+ return NS_ERROR;
+ }
- OICFree(entityHandlerRequest->query);
- OCPayloadDestroy(entityHandlerRequest->payload);
- OICFree(entityHandlerRequest);
+ if (obj->mAddress)
+ {
+ OICFree(obj->mAddress);
+ obj->mAddress = NULL;
+ }
- NS_LOG(DEBUG, "NSFreeOCEntityHandlerRequest - OUT");
+ if (obj->mDeviceId)
+ {
+ OICFree(obj->mDeviceId);
+ obj->mDeviceId = NULL;
+ }
+
+ OICFree(obj);
return NS_OK;
}
+NSConsumer* NSDuplicateConsumer(NSConsumer * copyMsg)
+{
+ NSConsumer * newMsg = NULL;
+
+ if(copyMsg == NULL)
+ {
+ NS_LOG(ERROR, "Copy Msg is NULL");
+ return NULL;
+ }
+
+ newMsg = (NSConsumer *)OICMalloc(sizeof(NSConsumer));
+ newMsg->mAddress = NULL;
+ newMsg->mDeviceId = NULL;
+ if (copyMsg->mAddress)
+ {
+ newMsg->mAddress = OICStrdup(copyMsg->mAddress);
+ }
+
+ if (copyMsg->mDeviceId)
+ {
+ newMsg->mDeviceId = OICStrdup(copyMsg->mDeviceId);
+ }
+
+ return newMsg;
+}
#include "oic_malloc.h"\r
#include "oic_string.h"\r
\r
-NSResult NSFreeMessage(NSMessage *);\r
-NSMessage * NSDuplicateMessage(NSMessage *);\r
OCEntityHandlerRequest *NSCopyOCEntityHandlerRequest(OCEntityHandlerRequest *);\r
NSResult NSFreeOCEntityHandlerRequest(OCEntityHandlerRequest *);\r
\r
+NSResult NSFreeMessage(NSMessage *);\r
+NSMessage * NSDuplicateMessage(NSMessage *);\r
+\r
+NSResult NSFreeSync(NSSync *);\r
+NSSync * NSDuplicateSync(NSSync *);\r
+\r
+NSResult NSFreeConsumer(NSConsumer *);\r
+NSConsumer * NSDuplicateConsumer(NSConsumer *);\r
+\r
#endif /* _NS_UTIL__H_ */\r
\r
NSResult NSStartPresence()\r
{\r
- OIC_LOG(INFO, DISCOVERY_TAG, "NSStartPresence()");\r
- NS_LOG(INFO, "NSStartPresence()");\r
+ NS_LOG(DEBUG, "NSStartPresence()");\r
\r
if (OCStartPresence(0) != OC_STACK_OK)\r
{\r
- OIC_LOG(INFO, DISCOVERY_TAG, "NSStartPresence() NS_ERROR");\r
- NS_LOG(INFO, "NSStartPresence() NS_ERROR");\r
+ NS_LOG(DEBUG, "NSStartPresence() NS_ERROR");\r
return NS_ERROR;\r
}\r
\r
- OIC_LOG(INFO, DISCOVERY_TAG, "NSStartPresence() NS_OK");\r
- NS_LOG(INFO, "NSStartPresence() NS_OK");\r
+ NS_LOG(DEBUG, "NSStartPresence() NS_OK");\r
return NS_OK;\r
}\r
\r
NSResult NSStopPresence()\r
{\r
- OIC_LOG(INFO, DISCOVERY_TAG, "NSStopPresence()");\r
- NS_LOG(INFO, "NSStopPresence()");\r
+ NS_LOG(DEBUG, "NSStopPresence()");\r
\r
if (OCStopPresence() != OC_STACK_OK)\r
{\r
- OIC_LOG(INFO, DISCOVERY_TAG, "NSStopPresence() NS_ERROR");\r
- NS_LOG(INFO, "NSStopPresence() NS_ERROR");\r
+ NS_LOG(DEBUG, "NSStopPresence() NS_ERROR");\r
return NS_ERROR;\r
}\r
\r
- OIC_LOG(INFO, DISCOVERY_TAG, "NSStopPresence() NS_OK");\r
- NS_LOG(INFO, "NSStopPresence() NS_OK");\r
+ NS_LOG(DEBUG, "NSStopPresence() NS_OK");\r
return NS_OK;\r
}\r
\r
{\r
if (ptr == NULL)\r
{\r
- OIC_LOG(INFO, DISCOVERY_TAG, "Create NSDiscoverySchedule\n");\r
- NS_LOG(INFO, "Create NSDiscoverySchedule");\r
+ NS_LOG(DEBUG, "Create NSDiscoverySchedule");\r
}\r
\r
while (NSIsRunning[DISCOVERY_SCHEDULER])\r
switch (node->taskType)\r
{\r
case TASK_START_PRESENCE:\r
- NS_LOG(INFO, "CASE TASK_START_PRESENCE : ");\r
+ NS_LOG(DEBUG, "CASE TASK_START_PRESENCE : ");\r
NSStartPresence();\r
break;\r
case TASK_STOP_PRESENCE:\r
- NS_LOG(INFO, "CASE TASK_STOP_PRESENCE : ");\r
+ NS_LOG(DEBUG, "CASE TASK_STOP_PRESENCE : ");\r
NSStopPresence();\r
break;\r
case TASK_REGISTER_RESOURCE:\r
- NS_LOG(INFO, "CASE TASK_REGISTER_RESOURCE : ");\r
+ NS_LOG(DEBUG, "CASE TASK_REGISTER_RESOURCE : ");\r
NSRegisterResource();\r
break;\r
default:\r
pthread_mutex_unlock(&NSMutex[DISCOVERY_SCHEDULER]);\r
\r
}\r
+\r
+ NS_LOG(DEBUG, "Destroy NSDiscoverySchedule");\r
return NULL;\r
}\r
NSResult NSStartProvider(NSAccessPolicy policy, NSSubscribeRequestCallback subscribeRequestCb,\r
NSSyncCallback syncCb)\r
{\r
- OIC_LOG(INFO, INTERFACE_TAG, "Notification Service Start Provider..");\r
NS_LOG(DEBUG, "NSStartProvider - IN");\r
\r
initializeMutex();\r
NSInitScheduler();\r
NSStartScheduler();\r
\r
+\r
NSPushQueue(DISCOVERY_SCHEDULER, TASK_START_PRESENCE, NULL);\r
NSPushQueue(DISCOVERY_SCHEDULER, TASK_REGISTER_RESOURCE, NULL);\r
}\r
{\r
NS_LOG(DEBUG, "Already started Notification Provider");\r
}\r
-\r
pthread_mutex_unlock(&nsInitMutex);\r
\r
NS_LOG(DEBUG, "NSStartProvider - OUT");\r
\r
pthread_mutex_lock(&nsInitMutex);\r
\r
- NSRegisterSubscribeRequestCb((NSSubscribeRequestCallback)NULL);\r
- NSRegisterSyncCb((NSSyncCallback)NULL);\r
- initProvider = false;\r
+ if(initProvider)\r
+ {\r
+ NSUnRegisterResource();\r
+ NSRegisterSubscribeRequestCb((NSSubscribeRequestCallback)NULL);\r
+ NSRegisterSyncCb((NSSyncCallback)NULL);\r
+ NSStopScheduler();\r
+ NSCacheDestroy(consumerSubList);\r
+ NSCacheDestroy(messageList);\r
+\r
+ initProvider = false;\r
+ }\r
\r
pthread_mutex_unlock(&nsInitMutex);\r
NS_LOG(DEBUG, "NSStopProvider - OUT");\r
\r
NSResult NSSendNotification(NSMessage *msg)\r
{\r
- OIC_LOG(INFO, INTERFACE_TAG, "Send Notification");\r
NS_LOG(DEBUG, "NSSendNotification - IN");\r
\r
- NSMessage * newMsg = NSDuplicateMessage(msg);\r
+ pthread_mutex_lock(&nsInitMutex);\r
\r
- if(newMsg == NULL)\r
+ if(msg == NULL)\r
{\r
NS_LOG(ERROR, "Msg is NULL");\r
+ pthread_mutex_unlock(&nsInitMutex);\r
return NS_ERROR;\r
}\r
\r
+ NSMessage * newMsg = NSDuplicateMessage(msg);\r
+\r
NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_NOTIFICATION, newMsg);\r
+\r
+ pthread_mutex_unlock(&nsInitMutex);\r
+\r
NS_LOG(DEBUG, "NSSendNotification - OUT");\r
return NS_OK;\r
}\r
\r
NSResult NSProviderReadCheck(NSMessage *msg)\r
{\r
- OIC_LOG(INFO, INTERFACE_TAG, "Read Sync");\r
NS_LOG(DEBUG, "NSProviderReadCheck - IN");\r
+\r
+ pthread_mutex_lock(&nsInitMutex);\r
NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_READ, msg);\r
+ pthread_mutex_unlock(&nsInitMutex);\r
+\r
NS_LOG(DEBUG, "NSProviderReadCheck - OUT");\r
return NS_OK;\r
}\r
\r
NSResult NSAccept(NSConsumer *consumer, bool accepted)\r
{\r
- OIC_LOG(INFO, INTERFACE_TAG, "Response Acceptance");\r
NS_LOG(DEBUG, "NSAccept - IN");\r
\r
+ pthread_mutex_lock(&nsInitMutex);\r
+\r
+ NSConsumer * newConsumer = NSDuplicateConsumer(consumer);\r
+\r
if(accepted)\r
{\r
NS_LOG(DEBUG, "accepted is true - ALLOW");\r
- NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_ALLOW, consumer);\r
+ NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_ALLOW, newConsumer);\r
}\r
else\r
{\r
NS_LOG(DEBUG, "accepted is false - DENY");\r
- NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_DENY, consumer);\r
+ NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_DENY, newConsumer);\r
}\r
\r
+ pthread_mutex_unlock(&nsInitMutex);\r
NS_LOG(DEBUG, "NSAccept - OUT");\r
return NS_OK;\r
}\r
{\r
if (ptr == NULL)\r
{\r
- OIC_LOG(INFO, INTERFACE_TAG, "Init NSResponseSchedule");\r
NS_LOG(DEBUG, "Create NSReponseSchedule");\r
}\r
\r
case TASK_CB_SUBSCRIPTION:\r
{\r
NS_LOG(DEBUG, "CASE TASK_CB_SUBSCRIPTION : ");\r
- OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
- NSConsumer consumer;\r
\r
- consumer.mId = OICStrdup(request->devAddr.addr);\r
- int * obId = (int *) OICMalloc(sizeof(int));\r
- *obId = request->obsInfo.obsId;\r
- consumer.mUserData = obId;\r
+ OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
+ NSConsumer * consumer = (NSConsumer *)OICMalloc(sizeof(NSConsumer));\r
+ consumer->mDeviceId = OICStrdup(request->devAddr.addr);\r
+ consumer->mAddress = OICStrdup(request->devAddr.addr);\r
\r
- NSSubscribeRequestCb(&consumer);\r
+ NSSubscribeRequestCb(consumer);\r
+ NSFreeConsumer(consumer);\r
NSFreeOCEntityHandlerRequest(request);\r
\r
break;\r
break;\r
}\r
default:\r
- OIC_LOG(INFO, INTERFACE_TAG, "Response to User");\r
-\r
+ NS_LOG(DEBUG, "No Task Type");\r
break;\r
}\r
OICFree(node);\r
pthread_mutex_unlock(&NSMutex[RESPONSE_SCHEDULER]);\r
\r
}\r
+\r
+ NS_LOG(DEBUG, "Destroy NSResponseSchedule");\r
return NULL;\r
}\r
\r
OCEntityHandlerResult NSEntityHandlerNotificationCb(OCEntityHandlerFlag flag,\r
OCEntityHandlerRequest *entityHandlerRequest, void* callback)\r
{\r
- OIC_LOG_V (INFO, LISTENER_TAG, "Inside entity handler - flags: 0x%x", flag);\r
NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - IN");\r
\r
OCEntityHandlerResult ehResult = OC_EH_OK;\r
// Validate pointer\r
if (!entityHandlerRequest)\r
{\r
- OIC_LOG (ERROR, LISTENER_TAG, "Invalid request pointer");\r
+ NS_LOG(ERROR, "Invalid request pointer");\r
return OC_EH_ERROR;\r
}\r
\r
\r
if (flag & OC_REQUEST_FLAG)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Flag includes OC_REQUEST_FLAG");\r
+ NS_LOG(DEBUG, "Flag includes OC_REQUEST_FLAG");\r
\r
if (OC_REST_GET == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_GET from client");\r
NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - OC_REST_GET");\r
\r
NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_POLICY,\r
}\r
else if (OC_REST_PUT == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_PUT from client");\r
NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - OC_REST_PUT");\r
ehResult = OC_EH_OK;\r
}\r
else if (OC_REST_POST == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_POST from client");\r
NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - OC_REST_POST");\r
ehResult = OC_EH_OK;\r
}\r
else if (OC_REST_DELETE == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_DELETE from client");\r
NS_LOG(DEBUG, "NSEntityHandlerNotificationCb - OC_REST_DELETE");\r
ehResult = OC_EH_OK;\r
}\r
else\r
{\r
- OIC_LOG_V (INFO, LISTENER_TAG, "Received unsupported method %d from client",\r
+ NS_LOG_V (DEBUG, "Received unsupported method %d from client",\r
entityHandlerRequest->method);\r
ehResult = OC_EH_OK;\r
}\r
if (entityHandlerRequest->rcvdVendorSpecificHeaderOptions\r
&& entityHandlerRequest->numRcvdVendorSpecificHeaderOptions)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received vendor specific options");\r
+ NS_LOG (DEBUG, "Received vendor specific options");\r
uint8_t i = 0;\r
OCHeaderOption * rcvdOptions = entityHandlerRequest->rcvdVendorSpecificHeaderOptions;\r
for (i = 0; i < entityHandlerRequest->numRcvdVendorSpecificHeaderOptions; i++)\r
{\r
if (((OCHeaderOption) rcvdOptions[i]).protocolID == OC_COAP_ID)\r
{\r
- OIC_LOG_V(INFO, LISTENER_TAG, "Received option with OC_COAP_ID and ID %u with",\r
+ OIC_LOG_V(DEBUG, LISTENER_TAG, "Received option with OC_COAP_ID and ID %u with",\r
((OCHeaderOption)rcvdOptions[i]).optionID );\r
\r
- OIC_LOG_BUFFER(INFO, LISTENER_TAG, ((OCHeaderOption)rcvdOptions[i]).optionData,\r
+ OIC_LOG_BUFFER(DEBUG, LISTENER_TAG, ((OCHeaderOption)rcvdOptions[i]).optionData,\r
MAX_HEADER_OPTION_DATA_LENGTH);\r
}\r
}\r
OCEntityHandlerResult NSEntityHandlerMessageCb(OCEntityHandlerFlag flag,\r
OCEntityHandlerRequest *entityHandlerRequest, void* callback)\r
{\r
- OIC_LOG_V (INFO, LISTENER_TAG, "Inside entity handler - flags: 0x%x", flag);\r
NS_LOG(DEBUG, "NSEntityHandlerMessageCb - IN");\r
\r
OCEntityHandlerResult ehResult = OC_EH_OK;\r
// Validate pointer\r
if (!entityHandlerRequest)\r
{\r
- OIC_LOG (ERROR, LISTENER_TAG, "Invalid request pointer");\r
+ NS_LOG (ERROR,"Invalid request pointer");\r
return OC_EH_ERROR;\r
}\r
\r
\r
if (flag & OC_REQUEST_FLAG)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Flag includes OC_REQUEST_FLAG");\r
+ NS_LOG(DEBUG, "Flag includes OC_REQUEST_FLAG");\r
\r
if (OC_REST_GET == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_GET from client");\r
NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_REST_GET");\r
ehResult = OC_EH_OK;\r
}\r
else if (OC_REST_PUT == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_PUT from client");\r
NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_REST_PUT");\r
ehResult = OC_EH_OK;\r
}\r
else if (OC_REST_POST == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_POST from client");\r
NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_REST_POST");\r
ehResult = OC_EH_OK;\r
}\r
else if (OC_REST_DELETE == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_DELETE from client");\r
NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_REST_DELETE");\r
ehResult = OC_EH_OK;\r
}\r
else\r
{\r
- OIC_LOG_V (INFO, LISTENER_TAG, "Received unsupported method %d from client",\r
+ NS_LOG_V(DEBUG, "Received unsupported method %d from client",\r
entityHandlerRequest->method);\r
ehResult = OC_EH_OK;\r
}\r
if (entityHandlerRequest->rcvdVendorSpecificHeaderOptions\r
&& entityHandlerRequest->numRcvdVendorSpecificHeaderOptions)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received vendor specific options");\r
+ NS_LOG(DEBUG, "Received vendor specific options");\r
uint8_t i = 0;\r
OCHeaderOption * rcvdOptions = entityHandlerRequest->rcvdVendorSpecificHeaderOptions;\r
for (i = 0; i < entityHandlerRequest->numRcvdVendorSpecificHeaderOptions; i++)\r
{\r
if (((OCHeaderOption) rcvdOptions[i]).protocolID == OC_COAP_ID)\r
{\r
- OIC_LOG_V(INFO, LISTENER_TAG, "Received option with OC_COAP_ID and ID %u with",\r
+ OIC_LOG_V(DEBUG, LISTENER_TAG, "Received option with OC_COAP_ID and ID %u with",\r
((OCHeaderOption)rcvdOptions[i]).optionID );\r
\r
- OIC_LOG_BUFFER(INFO, LISTENER_TAG, ((OCHeaderOption)rcvdOptions[i]).optionData,\r
+ OIC_LOG_BUFFER(DEBUG, LISTENER_TAG, ((OCHeaderOption)rcvdOptions[i]).optionData,\r
MAX_HEADER_OPTION_DATA_LENGTH);\r
}\r
}\r
\r
if (flag & OC_OBSERVE_FLAG)\r
{\r
- OIC_LOG(DEBUG, LISTENER_TAG, "Flag includes OC_OBSERVE_FLAG");\r
NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_OBSERVE_FLAG");\r
\r
if (OC_OBSERVE_REGISTER == entityHandlerRequest->obsInfo.action)\r
{\r
- OIC_LOG (DEBUG, LISTENER_TAG, "Received OC_OBSERVE_REGISTER from client");\r
NS_LOG(DEBUG, "NSEntityHandlerMessageCb - OC_OBSERVE_REGISTER");\r
NS_LOG_V(DEBUG, "NSEntityHandlerMessageCb\n"\r
"Register message observerID : %d\n", entityHandlerRequest->obsInfo.obsId);\r
OCEntityHandlerResult NSEntityHandlerSyncCb(OCEntityHandlerFlag flag,\r
OCEntityHandlerRequest *entityHandlerRequest, void* callback)\r
{\r
- OIC_LOG_V (INFO, LISTENER_TAG, "Inside entity handler - flags: 0x%x", flag);\r
NS_LOG(DEBUG, "NSEntityHandlerSyncCb - IN");\r
OCEntityHandlerResult ehResult = OC_EH_OK;\r
OCEntityHandlerResponse response =\r
// Validate pointer\r
if (!entityHandlerRequest)\r
{\r
- OIC_LOG (ERROR, LISTENER_TAG, "Invalid request pointer");\r
+ NS_LOG(ERROR, "Invalid request pointer");\r
return OC_EH_ERROR;\r
}\r
\r
\r
if (flag & OC_REQUEST_FLAG)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Flag includes OC_REQUEST_FLAG");\r
+ NS_LOG(DEBUG, "Flag includes OC_REQUEST_FLAG");\r
\r
if (OC_REST_GET == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_GET from client");\r
NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_REST_GET");\r
ehResult = OC_EH_OK;\r
}\r
else if (OC_REST_PUT == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_PUT from client");\r
NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_REST_PUT");\r
ehResult = OC_EH_OK;\r
}\r
And broadcast the sync data to all subscribers including provider app\r
to synchronize the notification message status. */\r
\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_POST from client");\r
NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_REST_POST");\r
\r
NSPushQueue(NOTIFICATION_SCHEDULER, TASK_RECV_READ,\r
}\r
else if (OC_REST_DELETE == entityHandlerRequest->method)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received OC_REST_DELETE from client");\r
+ NS_LOG(DEBUG, "Received OC_REST_DELETE from client");\r
ehResult = OC_EH_OK;\r
}\r
else\r
{\r
- OIC_LOG_V (INFO, LISTENER_TAG, "Received unsupported method %d from client",\r
+ NS_LOG_V(DEBUG, "Received unsupported method %d from client",\r
entityHandlerRequest->method);\r
ehResult = OC_EH_OK;\r
}\r
if (entityHandlerRequest->rcvdVendorSpecificHeaderOptions\r
&& entityHandlerRequest->numRcvdVendorSpecificHeaderOptions)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "Received vendor specific options");\r
+ NS_LOG(DEBUG, "Received vendor specific options");\r
uint8_t i = 0;\r
OCHeaderOption * rcvdOptions = entityHandlerRequest->rcvdVendorSpecificHeaderOptions;\r
for (i = 0; i < entityHandlerRequest->numRcvdVendorSpecificHeaderOptions; i++)\r
{\r
if (((OCHeaderOption) rcvdOptions[i]).protocolID == OC_COAP_ID)\r
{\r
- OIC_LOG_V(INFO, LISTENER_TAG, "Received option with OC_COAP_ID and ID %u with",\r
+ OIC_LOG_V(DEBUG, LISTENER_TAG, "Received option with OC_COAP_ID and ID %u with",\r
((OCHeaderOption)rcvdOptions[i]).optionID );\r
\r
- OIC_LOG_BUFFER(INFO, LISTENER_TAG, ((OCHeaderOption)rcvdOptions[i]).optionData,\r
+ OIC_LOG_BUFFER(DEBUG, LISTENER_TAG, ((OCHeaderOption)rcvdOptions[i]).optionData,\r
MAX_HEADER_OPTION_DATA_LENGTH);\r
}\r
}\r
/** Requested by consumers to synchronize notification message status.\r
Store the observer IDs to storage or cache */\r
\r
- OIC_LOG(DEBUG, LISTENER_TAG, "Flag includes OC_OBSERVE_FLAG");\r
NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_OBSERVE_FLAG");\r
\r
if (OC_OBSERVE_REGISTER == entityHandlerRequest->obsInfo.action)\r
{\r
- OIC_LOG (DEBUG, LISTENER_TAG, "Received OC_OBSERVE_REGISTER from client");\r
NS_LOG(DEBUG, "NSEntityHandlerSyncCb - OC_OBSERVE_REGISTER");\r
NS_LOG_V(DEBUG, "NSEntityHandlerSyncCb\n - "\r
"Register Sync observerID : %d\n", entityHandlerRequest->obsInfo.obsId);\r
(void)adapter;\r
(void)remote_address;\r
\r
- OIC_LOG (INFO, LISTENER_TAG, "Connection State Changed");\r
NS_LOG(DEBUG, "NSProviderConnectionStateListener - IN");\r
\r
if (connected)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "CONNECTED");\r
NS_LOG(DEBUG, "CONNECTED");\r
\r
// Set Connection State\r
// should be implementation\r
(void)adapter;\r
\r
- OIC_LOG (INFO, LISTENER_TAG, "Adapter State Changed");\r
NS_LOG(DEBUG, "NSProviderAdapterStateListener - IN");\r
\r
if (enabled)\r
{\r
- OIC_LOG (INFO, LISTENER_TAG, "CONNECTED");\r
NS_LOG(DEBUG, "CONNECTED");\r
\r
// Set Connection State\r
OCRepPayload * repPayload = (OCRepPayload *)payload;\r
if (!OCRepPayloadGetPropString(repPayload, NS_ATTRIBUTE_ID, &retSync->mMessageId))\r
{\r
- OIC_LOG(DEBUG, LISTENER_TAG, "id of received sync is null");\r
OICFree(retSync);\r
return NULL;\r
}\r
int64_t state;\r
if (!OCRepPayloadGetPropInt(repPayload, NS_ATTRIBUTE_STATE, & state))\r
{\r
-\r
- OIC_LOG(DEBUG, LISTENER_TAG, "id of received sync is null");\r
-\r
OICFree(retSync->mMessageId);\r
OICFree(retSync);\r
return NULL;\r
\r
retSync->mState = (NSSyncTypes) state;\r
\r
- OIC_LOG_V(DEBUG, LISTENER_TAG, "Sync ID : %s", retSync->mMessageId);\r
- OIC_LOG_V(DEBUG, LISTENER_TAG, "Sync State : %d", (int) retSync->mState);\r
+ NS_LOG_V(DEBUG, "Sync ID : %s", retSync->mMessageId);\r
+ NS_LOG_V(DEBUG, "Sync State : %d", (int) retSync->mState);\r
\r
NS_LOG(DEBUG, "NSBuildOICNotificationSync - OUT");\r
\r
task = (NSTask*) OICMalloc(sizeof(NSTask));\r
if (!task)\r
{\r
- OIC_LOG(ERROR, LISTENER_TAG, PCF("Fail to allocate memory"));\r
+ NS_LOG(ERROR, "Fail to allocate memory");\r
return NS_ERROR;\r
}\r
\r
if (!*msgPayload)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("Failed to allocate payload"));
+ NS_LOG(ERROR, "Failed to allocate payload");
return NS_ERROR;
}
OCRepPayloadSetUri(*msgPayload, NSGetNotificationMessageUri());
- OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_ID, msg->mId);
- OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_TITLE, msg->mTitle);
- OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_TEXT, msg->mContentText);
- OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_SOURCE, msg->mSource);
+ if(msg->mId)
+ OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_ID, msg->mId);
+ if(msg->mTitle)
+ OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_TITLE, msg->mTitle);
+ if(msg->mContentText)
+ OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_TEXT, msg->mContentText);
+ if(msg->mSource)
+ OCRepPayloadSetPropString(*msgPayload, NS_ATTRIBUTE_SOURCE, msg->mSource);
NS_LOG(DEBUG, "NSGetMessagePayload - OUT");
return NS_OK;
if (!*syncPayload)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("Failed to allocate payload"));
+ NS_LOG(ERROR, "Failed to allocate payload");
return NS_ERROR;
}
OCRepPayloadSetUri(*syncPayload, NSGetNotificationSyncUri());
- OCRepPayloadSetPropString(*syncPayload, NS_ATTRIBUTE_ID, sync->mMessageId);
- OCRepPayloadSetPropInt(*syncPayload, NS_ATTRIBUTE_STATE, sync->mState);
+
+ if(sync->mMessageId)
+ {
+ OCRepPayloadSetPropString(*syncPayload, NS_ATTRIBUTE_ID, sync->mMessageId);
+ OCRepPayloadSetPropInt(*syncPayload, NS_ATTRIBUTE_STATE, sync->mState);
+ }
NS_LOG(DEBUG, "NSGetSyncPayload - OUT");
return NS_OK;
NSResult NSSendMessage(NSMessage *msg)
{
- OIC_LOG(DEBUG, NOTIFICATION_TAG, "Send Notification Message to consumer");
NS_LOG(DEBUG, "NSSendMessage - IN");
OCResourceHandle rHandle;
if (NSPutMessageResource(msg, &rHandle) != NS_OK)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("Fail to put notification resource"));
- NS_LOG(DEBUG, "fail to Put notification resource");
+ NS_LOG(ERROR, "fail to Put notification resource");
return NS_ERROR;
}
if (consumerSubList->head == NULL)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("no observers"));
NS_LOG(ERROR, "SubList->head is NULL, empty SubList");
return NS_ERROR;
}
if (NSGetMessagePayload(msg, &payload) != NS_OK)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("Failed to allocate payload"));
NS_LOG(ERROR, "fail to Get message payload");
return NS_ERROR;
}
if (ocstackResult != OC_STACK_OK)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, "fail to send message");
NS_LOG(ERROR, "fail to send message");
OCRepPayloadDestroy(payload);
return NS_ERROR;
NSResult NSSendSync(NSSync *sync)
{
- OIC_LOG(DEBUG, NOTIFICATION_TAG, "Send Notification Sync to consumer");
NS_LOG(DEBUG, "NSSendSync - IN");
OCObservationId obArray[255] = { 0, };
OCResourceHandle rHandle;
if (NSPutSyncResource(sync, &rHandle) != NS_OK)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("Fail to put sync resource"));
+ NS_LOG(ERROR, PCF("Fail to put sync resource"));
return NS_ERROR;
}
OCRepPayload* payload;
if (NSGetSyncPayload(sync, &payload) != NS_OK)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("Failed to allocate payload"));
+ NS_LOG(ERROR, "Failed to allocate payload");
return NS_ERROR;
}
if (ocstackResult != OC_STACK_OK)
{
- OIC_LOG(ERROR, NOTIFICATION_TAG, "fail to send Sync");
+ NS_LOG(ERROR, "fail to send Sync");
OCRepPayloadDestroy(payload);
return NS_ERROR;
{
if (ptr == NULL)
{
- OIC_LOG(DEBUG, NOTIFICATION_TAG, "Create NSNotifiactionSchedule");
NS_LOG(DEBUG, "Create NSNotifiactionSchedule");
}
NSTask *node = NSHeadMsg[NOTIFICATION_SCHEDULER];
NSHeadMsg[NOTIFICATION_SCHEDULER] = node->nextTask;
- switch ((int)node->taskType)
+ switch (node->taskType)
{
case TASK_SEND_NOTIFICATION:
{
NS_LOG(DEBUG, "CASE TASK_SEND_NOTIFICATION : ");
- NSMessage * nsMsg = (NSMessage *)node->taskData;
- NSSendMessage(nsMsg);
+ NSSendMessage((NSMessage *)node->taskData);
break;
}
case TASK_SEND_READ:
break;
default:
- OIC_LOG(ERROR, NOTIFICATION_TAG, "Unknown type message");
- NS_LOG(ERROR, "Unknow type message");
+ NS_LOG(ERROR, "Unknown type message");
break;
}
pthread_mutex_unlock(&NSMutex[NOTIFICATION_SCHEDULER]);
}
+
+ NS_LOG(INFO, "Destroy NSNotificationSchedule");
return NULL;
}
OCResourceHandle handle;
char* id;
char* state;
- NSDevice device;
} NSSyncResource;
NSNotificationResource NotificationResource;
NS_LOG(DEBUG, "NSCreateResource - IN");
if (!uri)
{
- OIC_LOG(ERROR, RESOURCE_TAG, "Resource URI cannot be NULL");
NS_LOG(NS_ERROR, "Resource URI cannot be NULL");
return NS_ERROR;
}
if (OCCreateResource(&NotificationResource.handle, NSType, NSInterface, NSUri,
NSEntityHandlerNotificationCb, NULL, OC_DISCOVERABLE) != OC_STACK_OK)
{
- OIC_LOG(ERROR, RESOURCE_TAG, PCF("Fail to Create Notification Resource"));
NS_LOG(NS_ERROR, "Fail to Create Notification Resource");
return NS_ERROR;
}
if (OCCreateResource(&NotificationMessageResource.handle, NSMessageType, NSInterface,
NSMessageUri, NSEntityHandlerMessageCb, NULL, OC_OBSERVABLE) != OC_STACK_OK)
{
- OIC_LOG(ERROR, RESOURCE_TAG, PCF("Fail to Create Notification Message Resource"));
NS_LOG(NS_ERROR, "Fail to Create Notification Message Resource");
return NS_ERROR;
}
{
NotificationSyncResource.id = NULL;
NotificationSyncResource.state = NULL;
- memset(&NotificationSyncResource.device, 0, sizeof(NSDevice));
NotificationSyncResource.handle = NULL;
if (OCCreateResource(&(NotificationSyncResource.handle), NSSyncType, NSInterface, NSSyncUri,
NSEntityHandlerSyncCb, NULL, OC_OBSERVABLE) != OC_STACK_OK)
{
- OIC_LOG(ERROR, RESOURCE_TAG, PCF("Fail to Create Notification Sync Resource"));
NS_LOG(NS_ERROR, "Fail to Create Notification Sync Resource");
return NS_ERROR;
}
}
else
{
- OIC_LOG(ERROR, RESOURCE_TAG, PCF("Fail to create resource with invalid URI"));
- NS_LOG(DEBUG, "Fail to create resource with invalid URI");
+ NS_LOG(ERROR, "Fail to create resource with invalid URI");
return NS_ERROR;
}
NSResult NSRegisterResource()
{
- OIC_LOG(INFO, RESOURCE_TAG, "NSRegisterResource");
NS_LOG(DEBUG, "NSRegisterResource - IN");
if (NSCreateResource(NSSyncUri) != NS_OK)
{
- OIC_LOG(ERROR, RESOURCE_TAG, PCF("Fail to register Sync Resource"));
- NS_LOG(DEBUG, "Fail to register Sync Resource");
+ NS_LOG(ERROR, "Fail to register Sync Resource");
return NS_ERROR;
}
if (NSCreateResource(NSMessageUri) != NS_OK)
{
- OIC_LOG(ERROR, RESOURCE_TAG, PCF("Fail to register Message Resource"));
- NS_LOG(DEBUG, "Fail to register Message Resource");
+ NS_LOG(ERROR, "Fail to register Message Resource");
return NS_ERROR;
}
if (NSCreateResource(NSUri) != NS_OK)
{
- OIC_LOG(ERROR, RESOURCE_TAG, PCF("Fail to register Notification Resource"));
- NS_LOG(DEBUG, "Fail to register Notification Resource");
+ NS_LOG(ERROR, "Fail to register Notification Resource");
return NS_ERROR;
}
return NS_OK;
}
+NSResult NSUnRegisterResource()
+{
+ NS_LOG(DEBUG, "NSUnRegisterResource - IN");
+
+ if (OCDeleteResource(NotificationResource.handle) != OC_STACK_OK)
+ {
+ NS_LOG(ERROR, "Fail to Delete Notification Resource");
+ return NS_ERROR;
+ }
+
+ if (OCDeleteResource(NotificationMessageResource.handle) != OC_STACK_OK)
+ {
+ NS_LOG(ERROR, "Fail to Delete Notification Message Resource");
+ return NS_ERROR;
+ }
+
+ if (OCDeleteResource(NotificationSyncResource.handle) != OC_STACK_OK)
+ {
+ NS_LOG(ERROR, "Fail to Delete Notification Sync Resource");
+ return NS_ERROR;
+ }
+
+ NS_LOG(DEBUG, "NSUnRegisterResource - OUT");
+ return NS_OK;
+}
+
NSResult NSPutNotificationResource(int accepter, OCResourceHandle * handle)
{
NS_LOG(DEBUG, "NSPutNotificationResource - IN");
NSResult NSPutMessageResource(NSMessage *msg, OCResourceHandle * handle)
{
- OIC_LOG(INFO, RESOURCE_TAG, "Put notification message to Resource");
NS_LOG(DEBUG, "NSPutMessageResource - IN");
if(msg != NULL)
{
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);
NSResult NSPutSyncResource(NSSync *sync, OCResourceHandle * handle)
{
- OIC_LOG(INFO, RESOURCE_TAG, "Put notification sync to Resource");
NS_LOG(DEBUG, "NSPutSyncResource - IN");
(void) sync;
NSResult NSRegisterResource();
+NSResult NSUnRegisterResource();
+
NSResult NSPutNotificationResource(int accepter, OCResourceHandle * handle);
NSResult NSPutMessageResource(NSMessage *msg, OCResourceHandle * handle);
\r
bool NSInitScheduler()\r
{\r
- OIC_LOG(INFO, SCHEDULER_TAG, "NSInitScheduler()");\r
NS_LOG(DEBUG, "NSInitScheduler - IN");\r
\r
int i = 0;\r
\r
for (i = THREAD_COUNT - 1; i >= 0; --i)\r
{\r
+ int status = -1;\r
\r
NSIsRunning[i] = false;\r
\r
- pthread_join(NSThread[i], (void *) NULL);\r
+ sem_post(&(NSSemaphore[i]));\r
+ pthread_join(NSThread[i], (void **) &status);\r
+\r
NSThread[i] = 0;\r
\r
pthread_mutex_lock(&NSMutex[i]);\r
\r
- while (NSHeadMsg[i]->nextTask != NULL)\r
+ while (NSHeadMsg[i] != NULL)\r
{\r
NSTask* temp = NSHeadMsg[i];\r
NSHeadMsg[i] = NSHeadMsg[i]->nextTask;\r
+ NSFreeData(i, NSHeadMsg[i]);\r
OICFree(temp);\r
}\r
\r
OICFree(NSHeadMsg[i]);\r
+ NSTailMsg[i] = NSHeadMsg[i] = NULL;\r
\r
pthread_mutex_unlock(&NSMutex[i]);\r
+ pthread_mutex_destroy(&NSMutex[i]);\r
}\r
\r
NS_LOG(DEBUG, "NSStopScheduler - OUT");\r
\r
void NSPushQueue(NSSchedulerType schedulerType, NSTaskType taskType, void* data)\r
{\r
+\r
+ if(NSIsRunning[schedulerType] == false)\r
+ return;\r
+\r
pthread_mutex_lock(&NSMutex[schedulerType]);\r
\r
NS_LOG(DEBUG, "NSPushQueue - IN");\r
pthread_mutex_unlock(&NSMutex[schedulerType]);\r
}\r
\r
+void NSFreeData(NSSchedulerType type, NSTask * task)\r
+{\r
+ NS_LOG(DEBUG, "NSFreeData - IN");\r
+\r
+ if (type == RESPONSE_SCHEDULER)\r
+ {\r
+ switch (task->taskType)\r
+ {\r
+ case TASK_CB_SUBSCRIPTION:\r
+ NS_LOG(DEBUG, "CASE TASK_CB_SUBSCRIPTION : Free");\r
+ NSFreeOCEntityHandlerRequest((OCEntityHandlerRequest*) task->taskData);\r
+ break;\r
+ case TASK_CB_SYNC:\r
+ NS_LOG(DEBUG, "CASE TASK_CB_SYNC : Free");\r
+ NSSync * sync = (NSSync*) task->taskData;\r
+ NSFreeSync(sync);\r
+ break;\r
+ default:\r
+ NS_LOG(DEBUG, "No Task Type");\r
+ break;\r
+ }\r
+ }\r
+ else if (type == DISCOVERY_SCHEDULER)\r
+ {\r
+ switch (task->taskType)\r
+ {\r
+ case TASK_START_PRESENCE:\r
+ case TASK_STOP_PRESENCE:\r
+ case TASK_REGISTER_RESOURCE:\r
+ NS_LOG(DEBUG, "Not required Free");\r
+ break;\r
+ default:\r
+ NS_LOG(DEBUG, "No Task Type");\r
+ break;\r
+ }\r
+ }\r
+ else if (type == SUBSCRIPTION_SCHEDULER)\r
+ {\r
+ switch (task->taskType)\r
+ {\r
+ case TASK_SEND_POLICY:\r
+ case TASK_RECV_SUBSCRIPTION:\r
+ case TASK_RECV_UNSUBSCRIPTION:\r
+ case TASK_SYNC_SUBSCRIPTION:\r
+ NS_LOG(DEBUG, "NSFreeOCEntityHandlerRequest : Free ");\r
+ NSFreeOCEntityHandlerRequest((OCEntityHandlerRequest*) task->taskData);\r
+ break;\r
+\r
+ case TASK_SEND_ALLOW:\r
+ case TASK_SEND_DENY:\r
+ NS_LOG(DEBUG, "NSFreeConsumer : Free ");\r
+ NSConsumer * consumer = (NSConsumer *) task->taskData;\r
+ NSFreeConsumer(consumer);\r
+ break;\r
+ default:\r
+ NS_LOG(DEBUG, "No Task Type");\r
+ break;\r
+ }\r
+ }\r
+ else if (type == NOTIFICATION_SCHEDULER)\r
+ {\r
+ switch (task->taskType)\r
+ {\r
+ case TASK_SEND_NOTIFICATION:\r
+ {\r
+ NS_LOG(DEBUG, "NSFreeMessage : Free ");\r
+ NSFreeMessage((NSMessage *)task->taskData);\r
+ break;\r
+ }\r
+ case TASK_SEND_READ:\r
+ case TASK_RECV_READ:\r
+ NS_LOG(DEBUG, "NSFreeSync : Free ");\r
+ NSFreeSync((NSSync*) task->taskData);\r
+ break;\r
+\r
+ default:\r
+ NS_LOG(DEBUG, "No Task Type");\r
+ break;\r
+ }\r
+ }\r
+\r
+ NS_LOG(DEBUG, "NSFreeData - OUT");\r
+}\r
#include "logger.h"\r
#include "oic_malloc.h"\r
#include "oic_string.h"\r
+#include "NSUtil.h"\r
\r
extern NSTask* NSHeadMsg[THREAD_COUNT]; // Current MSG;\r
extern NSTask* NSTailMsg[THREAD_COUNT]; // Recently MSG;\r
bool NSStartScheduler();\r
bool NSStopScheduler();\r
void NSPushQueue(NSSchedulerType, NSTaskType, void*);\r
+void NSFreeData(NSSchedulerType, NSTask * );\r
\r
#endif /* _PROVIDER_SCHEDULER_H_ */\r
\r
if (policy == NS_ACCEPTER_PROVIDER)\r
{\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Place Provider as a subscription accepter");\r
NS_LOG(DEBUG, "Place Provider as a subscription accepter");\r
}\r
else if (policy == NS_ACCEPTER_CONSUMER)\r
{\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Place Consumer as a subscription accepter");\r
NS_LOG(DEBUG, "Place Consumer as a subscription accepter");\r
}\r
\r
\r
NSResult NSSendAccessPolicyResponse(OCEntityHandlerRequest *entityHandlerRequest)\r
{\r
- OIC_LOG(DEBUG, NOTIFICATION_TAG, "Send Notification Policy to consumer");\r
NS_LOG(DEBUG, "NSSendAccessPolicyResponse - IN");\r
\r
// put notification resource\r
if (NSPutNotificationResource(NSGetSubscriptionAccepter(), ¬ificationResourceHandle)\r
!= NS_OK)\r
{\r
- OIC_LOG(ERROR, SUBSCRIPTION_TAG, PCF("Failed to put notification resource"));\r
NS_LOG(ERROR, "Fail to put notification resource");\r
return NS_ERROR;\r
}\r
OCRepPayload* payload = OCRepPayloadCreate();\r
if (!payload)\r
{\r
- OIC_LOG(ERROR, SUBSCRIPTION_TAG, PCF("Failed to allocate Payload"));\r
NS_LOG(ERROR, "payload is NULL");\r
return NS_ERROR;\r
}\r
// Send Response\r
if (OCDoResponse(&response) != OC_STACK_OK)\r
{\r
- OIC_LOG(ERROR, SUBSCRIPTION_TAG, PCF("Fail to send response"));\r
NS_LOG(ERROR, "Fail to AccessPolicy send response");\r
return NS_ERROR;\r
}\r
\r
void NSHandleSubscription(OCEntityHandlerRequest *entityHandlerRequest, NSResourceType resourceType)\r
{\r
-\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Start to subscription process");\r
NS_LOG(DEBUG, "NSHandleSubscription - IN");\r
\r
if (resourceType == NS_RESOURCE_MESSAGE)\r
\r
void NSHandleUnsubscription(OCEntityHandlerRequest *entityHandlerRequest)\r
{\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Start to unsubscription process");\r
NS_LOG(DEBUG, "NSHandleUnsubscription - IN");\r
\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
\r
if (NSCacheWrite(consumerSubList, element) != NS_OK)\r
{\r
- OIC_LOG(ERROR, SUBSCRIPTION_TAG, "fail to write consumer white list");\r
NS_LOG(ERROR, "fail to write consumer white list");\r
}\r
\r
\r
void NSAskAcceptanceToUser(OCEntityHandlerRequest *entityHandlerRequest)\r
{\r
- OIC_LOG(DEBUG, SUBSCRIPTION_TAG, "Ask for user to Allow or Deny");\r
NS_LOG(DEBUG, "NSAskAcceptanceToUser - IN");\r
\r
NSPushQueue(RESPONSE_SCHEDULER, TASK_CB_SUBSCRIPTION, entityHandlerRequest);\r
OCRepPayload* payload = OCRepPayloadCreate();\r
if (!payload)\r
{\r
- OIC_LOG(ERROR, SUBSCRIPTION_TAG, PCF("Failed to allocate Payload"));\r
NS_LOG(ERROR, "fail to create playload");\r
return NS_ERROR;\r
}\r
OCResourceHandle rHandle;\r
if (NSPutMessageResource(NULL, &rHandle) != NS_OK)\r
{\r
- OIC_LOG(ERROR, NOTIFICATION_TAG, PCF("Fail to put notification resource"));\r
NS_LOG(ERROR, "Fail to put notification resource");\r
return NS_ERROR;\r
}\r
if (OCNotifyListOfObservers(rHandle, (OCObservationId*)&subData->messageObId, 1, payload, OC_HIGH_QOS)\r
!= OC_STACK_OK)\r
{\r
- OIC_LOG(ERROR, SUBSCRIPTION_TAG, "fail to send Acceptance");\r
NS_LOG(ERROR, "fail to send Acceptance");\r
OCRepPayloadDestroy(payload);\r
return NS_ERROR;\r
\r
NSResult NSSendSubscriptionResponse(OCEntityHandlerRequest *entityHandlerRequest, bool accepted)\r
{\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Send ACCEPT message to consumer");\r
NS_LOG(DEBUG, "NSSendSubscriptionResponse - IN");\r
\r
if (!entityHandlerRequest)\r
{\r
- OIC_LOG (ERROR, LISTENER_TAG, "Invalid request pointer");\r
+ NS_LOG(ERROR, "Invalid request pointer");\r
return OC_EH_ERROR;\r
}\r
\r
\r
if (NSCacheWrite(consumerSubList, element) != NS_OK)\r
{\r
- OIC_LOG(ERROR, SUBSCRIPTION_TAG, "fail to write consumer white list");\r
NS_LOG(ERROR, "fail to write consumer white list");\r
}\r
}\r
\r
void * NSSubScriptionSchedule(void *ptr)\r
{\r
-\r
if (ptr == NULL)\r
{\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Create NSSubscriptionSchedule");\r
NS_LOG(DEBUG, "Create NSSubScriptionSchedule");\r
}\r
\r
NS_LOG(DEBUG, "CASE TASK_SEND_ALLOW : ");\r
NSConsumer * consumer = (NSConsumer *) node->taskData;\r
\r
- NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
- subData->id = OICStrdup(consumer->mId);\r
- subData->isWhite = true;\r
- subData->messageObId = 0;\r
- subData->syncObId = 0;\r
-\r
- NSCacheUpdateSubScriptionState(consumerSubList, subData);\r
- NSSendResponse(consumer->mId, true);\r
+ char * id = OICStrdup(consumer->mDeviceId);\r
\r
+ NSCacheUpdateSubScriptionState(consumerSubList, id, true);\r
+ NSSendResponse(id, true);\r
+ OICFree(id);\r
+ NSFreeConsumer(consumer);\r
break;\r
}\r
case TASK_SEND_DENY:\r
{\r
NS_LOG(DEBUG, "CASE TASK_SEND_DENY : ");\r
NSConsumer * consumer = (NSConsumer *) node->taskData;\r
- int * pObId = (int *) consumer->mUserData;\r
\r
- NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
- subData->id = OICStrdup(consumer->mId);\r
- subData->isWhite = false;\r
- subData->messageObId = 0;\r
- subData->syncObId = 0;\r
+ char * id = OICStrdup(consumer->mDeviceId);\r
+\r
+ NSCacheUpdateSubScriptionState(consumerSubList, id, false);\r
+ NSSendResponse(id, false);\r
+ OICFree(id);\r
+ NSFreeConsumer(consumer);\r
\r
- NSCacheUpdateSubScriptionState(consumerSubList, subData);\r
- printf("observer ID = %d\n", *pObId);\r
- NSSendResponse(consumer->mId, false);\r
break;\r
}\r
case TASK_SYNC_SUBSCRIPTION:\r
pthread_mutex_unlock(&NSMutex[SUBSCRIPTION_SCHEDULER]);\r
\r
}\r
+ NS_LOG(INFO, "Destroy NSSubScriptionSchedule");\r
return NULL;\r
}\r
\r
void NSSetProviderConnectionState(NSConnectionState state)\r
{\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Change Connection State");\r
NS_LOG(DEBUG, "NSSetProviderConnectionState");\r
\r
NSProviderConnectionState = state;\r
\r
NSConnectionState NSGetProviderConnectionState()\r
{\r
- OIC_LOG(INFO, SUBSCRIPTION_TAG, "Change Connection State");\r
- //NS_LOG(DEBUG, "NSGetProviderConnectionState");\r
+ NS_LOG(DEBUG, "Change Connection State");\r
\r
return NSProviderConnectionState;\r
}\r
return NULL;\r
}\r
\r
-NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, NSCacheSubData * updateData)\r
+NSResult NSCacheUpdateSubScriptionState(NSCacheList * list, char * id, bool state)\r
{\r
pthread_mutex_lock(&NSCacheMutex);\r
\r
NS_LOG(DEBUG, "NSCacheUpdateSubScriptionState - IN");\r
\r
- if (updateData == NULL)\r
+ if (id == NULL)\r
{\r
- NS_LOG(DEBUG, "updateData is NULL");\r
+ NS_LOG(DEBUG, "id is NULL");\r
pthread_mutex_unlock(&NSCacheMutex);\r
return NS_ERROR;\r
}\r
\r
pthread_mutex_unlock(&NSCacheMutex);\r
- NSCacheElement * it = NSCacheRead(list, updateData->id);\r
+ NSCacheElement * it = NSCacheRead(list, id);\r
pthread_mutex_lock(&NSCacheMutex);\r
\r
if (it)\r
{\r
NSCacheSubData * itData = (NSCacheSubData *) it->data;\r
- if (strcmp(itData->id, updateData->id) == 0)\r
+ if (strcmp(itData->id, id) == 0)\r
{\r
NS_LOG(DEBUG, "Update Data - IN");\r
\r
NS_LOG_V(DEBUG, "currData_SyncObID = %d", itData->syncObId);\r
NS_LOG_V(DEBUG, "currData_IsWhite = %d", itData->isWhite);\r
\r
- NS_LOG_V(DEBUG, "updateData_ID = %s", updateData->id);\r
- NS_LOG_V(DEBUG, "updateData_MsgObID = %d", updateData->messageObId);\r
- NS_LOG_V(DEBUG, "updateData_SyncObID = %d", updateData->syncObId);\r
- NS_LOG_V(DEBUG, "updateData_IsWhite = %d", updateData->isWhite);\r
+ NS_LOG_V(DEBUG, "update state = %d", state);\r
\r
- itData->isWhite = updateData->isWhite;\r
+ itData->isWhite = state;\r
\r
NS_LOG(DEBUG, "Update Data - OUT");\r
pthread_mutex_unlock(&NSCacheMutex);\r
\r
bool NSProviderIsFoundCacheData(NSCacheType, void *, void*);\r
\r
-NSResult NSCacheUpdateSubScriptionState(NSCacheList *, NSCacheSubData *);\r
+NSResult NSCacheUpdateSubScriptionState(NSCacheList *, char *, bool);\r
\r
pthread_mutex_t NSCacheMutex;\r
\r