return newProv;
}
-void NSRemoveProvider_internal(NSProvider_internal * prov)
+void NSRemoveProvider_internal(void * data)
{
- NS_VERIFY_NOT_NULL_V(prov);
+ NS_VERIFY_NOT_NULL_V(data);
+
+ NSProvider_internal * prov = data;
NSOICFree(prov->messageUri);
NSOICFree(prov->syncUri);
OCStackResult NSInvokeRequest(OCDoHandle * handle,
OCMethod method, const OCDevAddr * addr,
const char * queryUrl, OCPayload * payload,
- void * callbackFunc, void * callbackData, OCConnectivityType type)
+ void * callbackFunc, void * callbackData,
+ OCClientContextDeleter cd, OCConnectivityType type)
{
int mutexRet = pthread_mutex_lock(*(NSGetStackMutex()));
NS_VERIFY_NOT_NULL(mutexRet != 0 ? NULL : (void *)1, OC_STACK_ERROR);
cbdata.cb = callbackFunc;
cbdata.context = callbackData;
- cbdata.cd = NULL;
+ cbdata.cd = cd;
OCStackResult ret = OCDoResource(handle, method, queryUrl, addr,
payload, type, NS_QOS, &cbdata, NULL, 0);
NSProvider_internal * NSCopyProvider_internal(NSProvider_internal *);
NSProvider * NSCopyProvider(NSProvider_internal *);
-void NSRemoveProvider_internal(NSProvider_internal *);
+void NSRemoveProvider_internal(void *);
void NSRemoveProvider(NSProvider *);
NSTopicLL * NSCopyTopicNode(NSTopicLL *);
OCStackResult NSInvokeRequest(OCDoHandle * handle,
OCMethod method, const OCDevAddr * addr,
const char * queryUrl, OCPayload * payload,
- void * callbackFunc, void * callbackData, OCConnectivityType type);
+ void * callbackFunc, void * callbackData,
+ OCClientContextDeleter cd, OCConnectivityType type);
bool NSOCResultToSuccess(OCStackResult ret);
NS_LOG_V(DEBUG, "subscribe query : %s", query);
OCStackResult ret = NSInvokeRequest(&(connections->messageHandle),
OC_REST_OBSERVE, connections->addr, query, NULL,
- NSConsumerMessageListener, NULL, type);
+ NSConsumerMessageListener, NULL, NULL, type);
NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(NSOCResultToSuccess(ret),
NS_ERROR, NSUpdateObserveResult(provider_internal, query));
NSOICFree(query);
NS_LOG_V(DEBUG, "subscribe query : %s", query);
ret = NSInvokeRequest(&(connections->syncHandle),
OC_REST_OBSERVE, connections->addr, query, NULL,
- NSConsumerSyncInfoListener, NULL, type);
+ NSConsumerSyncInfoListener, NULL, NULL, type);
NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(NSOCResultToSuccess(ret),
NS_ERROR, NSUpdateObserveResult(provider_internal, query));
NSOICFree(query);
OCStackResult ret = NSInvokeRequest(NULL, OC_REST_POST, addr,
uri, (OCPayload*)payload,
- NSConsumerCheckPostResult, NULL, type);
+ NSConsumerCheckPostResult, NULL, NULL, type);
NSOICFree(uri);
return ret;
connections->isSubscribing = false;
connections = connections->next;
}
+
+ NSRemoveProvider_internal(provider);
}
else if (task->taskType == TASK_CONSUMER_REQ_TOPIC_LIST)
{
- NSProvider_internal * provider = (NSProvider_internal *)task->taskData;
+ NSProvider_internal * provider = NSCopyProvider_internal(task->taskData);
+ NSRemoveProvider_internal((NSProvider_internal *)task->taskData);
NSProviderConnectionInfo * connections = provider->connection;
NS_VERIFY_NOT_NULL_V(connections);
NS_LOG_V(DEBUG, "topic query : %s", query);
OCStackResult ret = NSInvokeRequest(NULL, OC_REST_GET, connections->addr,
- query, NULL, NSIntrospectTopic, (void *) provider, type);
+ query, NULL, NSIntrospectTopic, (void *) provider,
+ NSRemoveProvider_internal, type);
NS_VERIFY_STACK_SUCCESS_V(NSOCResultToSuccess(ret));
NSOICFree(query);
NS_LOG_V(DEBUG, "topic query : %s", query);
OCStackResult ret = NSInvokeRequest(NULL, OC_REST_POST, connections->addr,
- query, (OCPayload*)payload, NSConsumerCheckPostResult, NULL, type);
+ query, (OCPayload*)payload, NSConsumerCheckPostResult,
+ NULL, NULL, type);
NS_VERIFY_STACK_SUCCESS_V(NSOCResultToSuccess(ret));
+ NSRemoveProvider_internal(provider);
NSOICFree(query);
NSOICFree(topicUri);
}
{
(void) handle;
- NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(clientResponse, OC_STACK_KEEP_TRANSACTION,
- NSRemoveProvider_internal((NSProvider_internal *) ctx));
- NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(NSOCResultToSuccess(clientResponse->result),
- OC_STACK_KEEP_TRANSACTION, NSRemoveProvider_internal((NSProvider_internal *) ctx));
+ NS_VERIFY_NOT_NULL(clientResponse, OC_STACK_KEEP_TRANSACTION);
+ NS_VERIFY_STACK_SUCCESS(NSOCResultToSuccess(clientResponse->result),
+ OC_STACK_KEEP_TRANSACTION);
NS_LOG_V(DEBUG, "GET response income : %s:%d",
clientResponse->devAddr.addr, clientResponse->devAddr.port);
NSTopicLL * newTopicLL = NSGetTopicLL(clientResponse);
- NSProvider_internal * provider = (NSProvider_internal *) ctx;
+ NSProvider_internal * provider = NSCopyProvider_internal((NSProvider_internal *) ctx);
provider->topicLL = NSCopyTopicLL(newTopicLL);
NS_LOG(DEBUG, "build NSTask");
{
NS_LOG(DEBUG, "started presence or resource is created.");
NSInvokeRequest(NULL, OC_REST_DISCOVER, clientResponse->addr,
- NS_DISCOVER_QUERY, NULL, NSProviderDiscoverListener, NULL,
+ NS_DISCOVER_QUERY, NULL, NSProviderDiscoverListener, NULL, NULL,
clientResponse->addr->adapter);
}
NSInvokeRequest(NULL, OC_REST_GET, addr,
resource->uri, NULL, NSIntrospectProvider, ctx,
- type);
+ NULL, type);
}
resource = resource->next;
}
NS_LOG(DEBUG, "Request discover and subscribe presence [TCP]");
NS_LOG(DEBUG, "Subscribe presence [TCP]");
NSInvokeRequest(NULL, OC_REST_PRESENCE, address, NS_PRESENCE_SUBSCRIBE_QUERY_TCP,
- NULL, NSConsumerPresenceListener, NULL, type);
+ NULL, NSConsumerPresenceListener, NULL, NULL, type);
if (rType == NS_DISCOVER_CLOUD)
{
}
NSInvokeRequest(NULL, OC_REST_DISCOVER, address, NS_DISCOVER_QUERY,
- NULL, NSProviderDiscoverListener, (void *)callbackData, type);
+ NULL, NSProviderDiscoverListener, (void *)callbackData, NULL, type);
}
void NSConsumerDiscoveryTaskProcessing(NSTask * task)
NS_LOG(DEBUG, "Request to subscribe presence");
OCStackResult stackResult = NSInvokeRequest(getPresenceHandle(), OC_REST_PRESENCE, NULL,
NS_PRESENCE_SUBSCRIBE_QUERY, NULL, NSConsumerPresenceListener,
- NULL, CT_DEFAULT);
+ NULL, NULL, CT_DEFAULT);
NS_VERIFY_STACK_SUCCESS(NSOCResultToSuccess(stackResult), NS_ERROR);
NS_LOG(DEBUG, "Request to discover provider");
stackResult = NSInvokeRequest(NULL, OC_REST_DISCOVER, NULL,
NS_DISCOVER_QUERY, NULL, NSProviderDiscoverListener,
- NULL, CT_DEFAULT);
+ NULL, NULL, CT_DEFAULT);
NS_VERIFY_STACK_SUCCESS(NSOCResultToSuccess(stackResult), NS_ERROR);
return NS_OK;