//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
\r
#include "NSProviderSubscription.h"\r
+#include "NSProviderListener.h"\r
\r
NSResult NSInitSubscriptionList()\r
{\r
NS_LOG(DEBUG, "NSInitSubscriptionList - IN");\r
\r
- consumerSubList = NSStorageCreate();\r
+ consumerSubList = NSProviderStorageCreate();\r
+ NS_VERIFY_NOT_NULL(consumerSubList, NS_FAIL);\r
consumerSubList->cacheType = NS_PROVIDER_CACHE_SUBSCRIBER;\r
\r
NS_LOG(DEBUG, "NSInitSubscriptionList - OUT");\r
return NS_ERROR;\r
}\r
\r
- NS_LOG_V(DEBUG, "NS Provider ID: %s", NSGetProviderInfo()->providerId);\r
+ NS_LOG_V(INFO_PRIVATE, "NS Provider ID: %s", NSGetProviderInfo()->providerId);\r
\r
+ char * copyReq = OICStrdup(entityHandlerRequest->query);\r
+ char * reqInterface = NSGetValueFromQuery(copyReq, NS_QUERY_INTERFACE);\r
+\r
+ if (reqInterface && strcmp(reqInterface, NS_INTERFACE_BASELINE) == 0)\r
+ {\r
+ OCResourcePayloadAddStringLL(&payload->interfaces, NS_INTERFACE_BASELINE);\r
+ OCResourcePayloadAddStringLL(&payload->interfaces, NS_INTERFACE_READ);\r
+ OCResourcePayloadAddStringLL(&payload->types, NS_ROOT_TYPE);\r
+ }\r
+\r
+ NSOICFree(copyReq);\r
OCRepPayloadSetUri(payload, NS_ROOT_URI);\r
OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_PROVIDER_ID, NSGetProviderInfo()->providerId);\r
OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_VERSION, VERSION);\r
if (OCDoResponse(&response) != OC_STACK_OK)\r
{\r
NS_LOG(ERROR, "Fail to AccessPolicy send response");\r
+ OCRepPayloadDestroy(payload);\r
return NS_ERROR;\r
}\r
OCRepPayloadDestroy(payload);\r
{\r
NS_LOG(DEBUG, "NSHandleSubscription - IN");\r
\r
- char * id = NSGetValueFromQuery(OICStrdup(entityHandlerRequest->query), NS_QUERY_CONSUMER_ID);\r
+ char * copyReq = OICStrdup(entityHandlerRequest->query);\r
+ char * id = NSGetValueFromQuery(copyReq, NS_QUERY_CONSUMER_ID);\r
\r
- if(!id)\r
+ if (!id)\r
{\r
+ NSOICFree(copyReq);\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
NS_LOG(ERROR, "Invalid ConsumerID");\r
return;\r
}\r
\r
- NS_LOG_V(DEBUG, "consumerId = %s", id);\r
+ NS_LOG_V(INFO_PRIVATE, "consumerId = %s", id);\r
if (resourceType == NS_RESOURCE_MESSAGE)\r
{\r
NS_LOG(DEBUG, "resourceType == NS_RESOURCE_MESSAGE");\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
+ NS_VERIFY_NOT_NULL_V(element);\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
+ NS_VERIFY_NOT_NULL_V(subData);\r
\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
- NS_LOG_V(DEBUG, "SubList ID = [%s]", subData->id);\r
+ NS_LOG_V(INFO_PRIVATE, "SubList ID = [%s]", subData->id);\r
\r
- NS_LOG_V(DEBUG, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
+ NS_LOG_V(INFO_PRIVATE, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
\r
subData->remote_messageObId = subData->messageObId = 0;\r
\r
bool iSRemoteServer = false;\r
\r
-#if(defined WITH_CLOUD && defined RD_CLIENT)\r
+#if(defined WITH_CLOUD)\r
iSRemoteServer = NSIsRemoteServerAddress(entityHandlerRequest->devAddr.addr);\r
- if(iSRemoteServer)\r
+ if (iSRemoteServer)\r
{\r
NS_LOG(DEBUG, "Requested by remote server");\r
subData->remote_messageObId = entityHandlerRequest->obsInfo.obsId;\r
}\r
#endif\r
\r
- if(!iSRemoteServer)\r
+ if (!iSRemoteServer)\r
{\r
NS_LOG(DEBUG, "Requested by local consumer");\r
subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
element->data = (void*) subData;\r
element->next = NULL;\r
\r
- if (NSStorageWrite(consumerSubList, element) != NS_OK)\r
+ if (NSProviderStorageWrite(consumerSubList, element) != NS_OK)\r
{\r
NS_LOG(DEBUG, "fail to write cache");\r
}\r
\r
bool currPolicy = NSGetPolicy();\r
+ NSAskAcceptanceToUser(NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
\r
if (currPolicy == NS_POLICY_PROVIDER)\r
{\r
NS_LOG(DEBUG, "NSGetSubscriptionAccepter == NS_ACCEPTER_PROVIDER");\r
- NSAskAcceptanceToUser(entityHandlerRequest);\r
}\r
else if (currPolicy == NS_POLICY_CONSUMER)\r
{\r
NS_LOG(DEBUG, "NSGetSubscriptionAccepter == NS_ACCEPTER_CONSUMER");\r
- NSSendConsumerSubResponse(entityHandlerRequest);\r
+ NSSendConsumerSubResponse(NSCopyOCEntityHandlerRequest(entityHandlerRequest));\r
}\r
+\r
+ NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
}\r
else if (resourceType == NS_RESOURCE_SYNC)\r
{\r
NS_LOG(DEBUG, "resourceType == NS_RESOURCE_SYNC");\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
+ NS_VERIFY_NOT_NULL_V(element);\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
+ NS_VERIFY_NOT_NULL_V(subData);\r
\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
- NS_LOG_V(DEBUG, "SubList ID = [%s]", subData->id);\r
+ NS_LOG_V(INFO_PRIVATE, "SubList ID = [%s]", subData->id);\r
\r
- NS_LOG_V(DEBUG, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
+ NS_LOG_V(INFO_PRIVATE, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
\r
subData->remote_syncObId = subData->syncObId = 0;\r
bool isRemoteServer = false;\r
\r
-#if(defined WITH_CLOUD && defined RD_CLIENT)\r
+#if (defined WITH_CLOUD)\r
isRemoteServer = NSIsRemoteServerAddress(entityHandlerRequest->devAddr.addr);\r
- if(isRemoteServer)\r
+ if (isRemoteServer)\r
{\r
NS_LOG(DEBUG, "Requested by remote server");\r
subData->remote_syncObId = entityHandlerRequest->obsInfo.obsId;\r
}\r
#endif\r
\r
- if(!isRemoteServer)\r
+ if (!isRemoteServer)\r
{\r
NS_LOG(DEBUG, "Requested by local consumer");\r
subData->syncObId = entityHandlerRequest->obsInfo.obsId;\r
element->data = (void*) subData;\r
element->next = NULL;\r
\r
- if (NSStorageWrite(consumerSubList, element) != NS_OK)\r
+ if (NS_OK != NSProviderStorageWrite(consumerSubList, element))\r
{\r
NS_LOG(ERROR, "Fail to write cache");\r
}\r
\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
}\r
+ NSOICFree(copyReq);\r
\r
NS_LOG(DEBUG, "NSHandleSubscription - OUT");\r
}\r
\r
consumerSubList->cacheType = NS_PROVIDER_CACHE_SUBSCRIBER_OBSERVE_ID;\r
\r
- while(NSStorageDelete(consumerSubList, (char *)\r
+ while (NSProviderStorageDelete(consumerSubList, (char *)\r
&(entityHandlerRequest->obsInfo.obsId)) != NS_FAIL);\r
- consumerSubList->cacheType = NS_PROVIDER_CACHE_SUBSCRIBER;\r
\r
+ consumerSubList->cacheType = NS_PROVIDER_CACHE_SUBSCRIBER;\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
-\r
NS_LOG(DEBUG, "NSHandleUnsubscription - OUT");\r
}\r
\r
: OCRepPayloadSetPropInt(payload, NS_ATTRIBUTE_MESSAGE_ID, NS_DENY);\r
OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_PROVIDER_ID, NSGetProviderInfo()->providerId);\r
\r
- NSCacheElement * element = NSStorageRead(consumerSubList, id);\r
+ NSCacheElement * element = NSProviderStorageRead(consumerSubList, id);\r
\r
- if(element == NULL)\r
+ if (element == NULL)\r
{\r
NS_LOG(ERROR, "element is NULL");\r
return NS_ERROR;\r
}\r
+\r
NSCacheSubData * subData = (NSCacheSubData*) element->data;\r
\r
- if (OCNotifyListOfObservers(rHandle, (OCObservationId*)&subData->messageObId, 1, payload, OC_LOW_QOS)\r
- != OC_STACK_OK)\r
+ if (OCNotifyListOfObservers(rHandle, (OCObservationId*)&subData->messageObId, 1,\r
+ payload, OC_LOW_QOS) != OC_STACK_OK)\r
{\r
NS_LOG(ERROR, "fail to send Acceptance");\r
OCRepPayloadDestroy(payload);\r
return NS_ERROR;\r
\r
}\r
- OCRepPayloadDestroy(payload);\r
\r
+ OCRepPayloadDestroy(payload);\r
NS_LOG(DEBUG, "NSSendResponse - OUT");\r
return NS_OK;\r
}\r
if (!entityHandlerRequest)\r
{\r
NS_LOG(ERROR, "Invalid request pointer");\r
- return OC_EH_ERROR;\r
+ return NS_ERROR;\r
}\r
\r
- char * id = NSGetValueFromQuery(OICStrdup(entityHandlerRequest->query), NS_QUERY_CONSUMER_ID);\r
+ char * copyReq = OICStrdup(entityHandlerRequest->query);\r
+ char * id = NSGetValueFromQuery(copyReq, NS_QUERY_CONSUMER_ID);\r
\r
- if(!id)\r
+ if (!id)\r
{\r
+ NSOICFree(copyReq);\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
NS_LOG(ERROR, "Invalid ConsumerID");\r
return NS_ERROR;\r
\r
NSCacheUpdateSubScriptionState(consumerSubList, id, true);\r
NSSendResponse(id, true);\r
+ NSOICFree(copyReq);\r
NSFreeOCEntityHandlerRequest(entityHandlerRequest);\r
NS_LOG(DEBUG, "NSSendSubscriptionResponse - OUT");\r
return NS_OK;\r
}\r
\r
+#ifdef WITH_MQ\r
+void NSProviderMQSubscription(NSMQTopicAddress * topicAddr)\r
+{\r
+ char * serverUri = topicAddr->serverAddr;\r
+ char * topicName = topicAddr->topicName;\r
+\r
+ NS_LOG_V(DEBUG, "input Topic Name2 : %s", topicAddr->topicName);\r
+\r
+ OCDevAddr * addr = NSChangeAddress(serverUri);\r
+ OCCallbackData cbdata = { NULL, NULL, NULL };\r
+ cbdata.cb = NSProviderGetMQResponseCB;\r
+ cbdata.context = OICStrdup(topicName);\r
+ cbdata.cd = NSOICFree;\r
+\r
+ char requestUri[100] = "coap+tcp://";\r
+\r
+ NS_LOG_V(DEBUG, "requestUri1 = %s", requestUri);\r
+ OICStrcat(requestUri, strlen(requestUri)+strlen(serverUri)+1, serverUri);\r
+ NS_LOG_V(DEBUG, "requestUri2 = %s", requestUri);\r
+ OICStrcat(requestUri, strlen(requestUri)+ strlen("/oic/ps") + 1, "/oic/ps");\r
+ NS_LOG_V(DEBUG, "requestUri3 = %s", requestUri);\r
+ OCStackResult ret = OCDoResource(NULL, OC_REST_GET, requestUri, addr,\r
+ NULL, CT_DEFAULT, OC_HIGH_QOS, &cbdata, NULL, 0);\r
+\r
+ NSOCResultToSuccess(ret);\r
+\r
+ NSOICFree(topicAddr->serverAddr);\r
+ NSOICFree(topicAddr->topicName);\r
+ NSOICFree(topicAddr);\r
+}\r
+#endif\r
+\r
void * NSSubScriptionSchedule(void *ptr)\r
{\r
if (ptr == NULL)\r
\r
NSCacheUpdateSubScriptionState(consumerSubList, consumerId, true);\r
NSSendResponse(consumerId, true);\r
- OICFree(consumerId);\r
+ NSOICFree(consumerId);\r
break;\r
}\r
case TASK_SEND_DENY:\r
\r
NSCacheUpdateSubScriptionState(consumerSubList, consumerId, false);\r
NSSendResponse(consumerId, false);\r
- OICFree(consumerId);\r
+ NSOICFree(consumerId);\r
\r
break;\r
}\r
NSHandleSubscription((OCEntityHandlerRequest*) node->taskData,\r
NS_RESOURCE_SYNC);\r
break;\r
+#ifdef WITH_MQ\r
+ case TASK_MQ_REQ_SUBSCRIBE:\r
+ NS_LOG(DEBUG, "CASE TASK_MQ_REQ_SUBSCRIBE : ");\r
+ NSProviderMQSubscription((NSMQTopicAddress*) node->taskData);\r
+ break;\r
+#endif\r
default:\r
break;\r
\r
}\r
- OICFree(node);\r
+ NSOICFree(node);\r
}\r
\r
pthread_mutex_unlock(&NSMutex[SUBSCRIPTION_SCHEDULER]);\r