+/******************************************************************\r
+ *\r
+ * Copyright 2015 Samsung Electronics All Rights Reserved.\r
+ *\r
+ *\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ ******************************************************************/\r
+\r
#include <stdio.h>\r
#include <stdbool.h>\r
#include <stdlib.h>\r
\r
int id;\r
\r
-void OCProcessThread(void * ptr)\r
+void* OCProcessThread(void * ptr)\r
{\r
(void) ptr;\r
while (!isExit)\r
if (OCProcess() != OC_STACK_OK)\r
{\r
OIC_LOG(ERROR, TAG, "OCStack process error");\r
- return;\r
+ return NULL;\r
}\r
}\r
+\r
+ return NULL;\r
}\r
\r
void subscribeRequestCallback(NSConsumer *consumer)\r
printf("body : ");\r
gets(body);\r
\r
- printf("app - mId : %s \n", charID);\r
+ printf("app - mId : %d \n", charID);\r
printf("app - mTitle : %s \n", title);\r
printf("app - mContentText : %s \n", body);\r
\r
-\r
NSMessage * msg = (NSMessage *)OICMalloc(sizeof(NSMessage));\r
\r
sprintf(charID, "%d", id);\r
#include "NSUtil.h"
-#include "oic_malloc.h"
-
NSResult NSFreeMessage(NSMessage * obj)
{
if (!obj)
return NS_OK;
}
+NSMessage * NSDuplicateMessage(NSMessage * copyMsg)
+{
+ if(copyMsg == NULL)
+ {
+ NS_LOG(ERROR, "Copy Msg is NULL");
+ return NULL;
+ }
+
+ NSMessage * newMsg = (NSMessage *)OICMalloc(sizeof(NSMessage));
+
+ if (!copyMsg->mId)
+ {
+ newMsg->mId = OICStrdup(copyMsg->mId);
+ }
+
+ if (!copyMsg->mTitle)
+ {
+ newMsg->mTitle = OICStrdup(copyMsg->mTitle);
+ }
+
+ if (!copyMsg->mContentText)
+ {
+ newMsg->mContentText = OICStrdup(copyMsg->mContentText);
+ }
+
+ return newMsg;
+}
+
+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;
+}
+
#include <stdbool.h>\r
#include "ocstack.h"\r
#include "ocpayload.h"\r
+#include "octypes.h"\r
#include "NSStructs.h"\r
#include "NSConstants.h"\r
+#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
#endif /* _NS_UTIL__H_ */\r
{\r
if (ptr == NULL)\r
{\r
- OIC_LOG(INFO, DISCOVERY_TAG, "Create NSDiscoverySchedule");\r
+ OIC_LOG(INFO, DISCOVERY_TAG, "Create NSDiscoverySchedule\n");\r
NS_LOG(INFO, "Create NSDiscoverySchedule");\r
}\r
\r
{\r
OIC_LOG(INFO, INTERFACE_TAG, "Send Notification");\r
NS_LOG(DEBUG, "NSSendNotification - IN");\r
- NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_NOTIFICATION, msg);\r
+\r
+ NSMessage * newMsg = NSDuplicateMessage(msg);\r
+\r
+ if(newMsg == NULL)\r
+ {\r
+ NS_LOG(ERROR, "Msg is NULL");\r
+ return NS_ERROR;\r
+ }\r
+\r
+ NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_NOTIFICATION, newMsg);\r
NS_LOG(DEBUG, "NSSendNotification - OUT");\r
return NS_OK;\r
}\r
consumer.mUserData = obId;\r
\r
NSSubscribeRequestCb(&consumer);\r
+ NSFreeOCEntityHandlerRequest(request);\r
\r
break;\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, (void *)entityHandlerRequest);\r
+ NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SEND_POLICY,\r
+ NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
ehResult = OC_EH_OK;\r
\r
}\r
\r
if (flag & OC_OBSERVE_FLAG)\r
{\r
- OIC_LOG(INFO, LISTENER_TAG, "Flag includes OC_OBSERVE_FLAG");\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 (INFO, LISTENER_TAG, "Received OC_OBSERVE_REGISTER from client");\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
- NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_RECV_SUBSCRIPTION, entityHandlerRequest);\r
+ NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_RECV_SUBSCRIPTION,\r
+ NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
}\r
}\r
\r
else if (OC_REST_POST == entityHandlerRequest->method)\r
{\r
/** Receive sync data from consumer which read or dismiss notification message.\r
- And broadcast the sync data to all subscribers including provider app\r
- to synchronize the notification message status. */\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
- // send to subscribers\r
- NSPushQueue(NOTIFICATION_SCHEDULER, TASK_SEND_READ,\r
- NSBuildOICNotificationSync(entityHandlerRequest->payload));\r
-\r
- // send to provider app\r
NSPushQueue(NOTIFICATION_SCHEDULER, TASK_RECV_READ,\r
NSBuildOICNotificationSync(entityHandlerRequest->payload));\r
-\r
ehResult = OC_EH_OK;\r
}\r
else if (OC_REST_DELETE == entityHandlerRequest->method)\r
/** Requested by consumers to synchronize notification message status.\r
Store the observer IDs to storage or cache */\r
\r
- OIC_LOG(INFO, LISTENER_TAG, "Flag includes OC_OBSERVE_FLAG");\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 (INFO, LISTENER_TAG, "Received OC_OBSERVE_REGISTER from client");\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 message observerID : %d\n", entityHandlerRequest->obsInfo.obsId);\r
- NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SYNC_SUBSCRIPTION, entityHandlerRequest);\r
+ "Register Sync observerID : %d\n", entityHandlerRequest->obsInfo.obsId);\r
+ NSPushQueue(SUBSCRIPTION_SCHEDULER, TASK_SYNC_SUBSCRIPTION,\r
+ NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
}\r
}\r
\r
#include "cautilinterface.h"\r
#include "oic_string.h"\r
#include "oic_malloc.h"\r
+#include "NSUtil.h"\r
\r
OCEntityHandlerResult NSEntityHandlerNotificationCb(OCEntityHandlerFlag flag,\r
OCEntityHandlerRequest *entityHandlerRequest, void* callback);\r
return NS_ERROR;
}
OCRepPayloadDestroy(payload);
+ NSFreeMessage(msg);
NS_LOG(DEBUG, "NSSendMessage - OUT");
return NS_ERROR;\r
}\r
OCRepPayloadDestroy(payload);\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
\r
NS_LOG(DEBUG, "NSSendAccessPolicyResponse - OUT");\r
return NS_OK;\r
element->data = (void*) subData;\r
element->next = NULL;\r
\r
+ NS_LOG_V(DEBUG, "SubList IP[ID] = [%s]", subData->id);\r
+ NS_LOG_V(DEBUG, "SubList message observation ID = [%d]", subData->messageObId);\r
+\r
if (NSCacheWrite(consumerSubList, element) != NS_OK)\r
{\r
NS_LOG(DEBUG, "fail to write cache");\r
element->next = NULL;\r
\r
NS_LOG_V(DEBUG, "SubList IP[ID] = [%s]", subData->id);\r
- NS_LOG_V(DEBUG, "SubList observation ID = [%d]", subData->syncObId);\r
+ NS_LOG_V(DEBUG, "SubList sync observation ID = [%d]", subData->syncObId);\r
\r
if (NSCacheWrite(consumerSubList, element) != NS_OK)\r
{\r
}\r
\r
NS_LOG(DEBUG, "NSHandleUnsubscription - IN");\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
}\r
\r
void NSAskAcceptanceToUser(OCEntityHandlerRequest *entityHandlerRequest)\r
}\r
\r
NSSendResponse(entityHandlerRequest->devAddr.addr, accepted);\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
\r
NS_LOG(DEBUG, "NSSendSubscriptionResponse - OUT");\r
return NS_OK;\r
void NSHandleUnsubscription(OCEntityHandlerRequest *entityHandlerRequest);\r
void NSAskAcceptanceToUser(OCEntityHandlerRequest *entityHandlerRequest);\r
NSResult NSSendSubscriptionResponse(OCEntityHandlerRequest *entityHandlerRequest, bool accepted);\r
+NSResult NSSendResponse(const char * id, bool accepted);\r
\r
#endif /* _NS_PROVIDER_SUBSCRIPTION_H_ */\r
NS_LOG_V(DEBUG, "currData_SyncObID = %d", itData->syncObId);\r
NS_LOG_V(DEBUG, "currData_IsWhite = %d", itData->isWhite);\r
\r
- NS_LOG(DEBUG,"");\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, "currData_SyncObID = %d", itData->syncObId);\r
NS_LOG_V(DEBUG, "currData_IsWhite = %d", itData->isWhite);\r
\r
- NS_LOG(DEBUG,"");\r
-\r
NS_LOG_V(DEBUG, "subData_ID = %s", subData->id);\r
NS_LOG_V(DEBUG, "subData_MsgObID = %d", subData->messageObId);\r
NS_LOG_V(DEBUG, "subData_SyncObID = %d", subData->syncObId);\r