char * NSGetCloudUri(const char * providerId, char * uri);
+NSResult NSUpdateObserveResult(NSProvider_internal * prov, char * query)
+{
+ NSOICFree(query);
+
+ NSProvider_internal * taskProvider = NSCopyProvider_internal(prov);
+ NSTask * task = NSMakeTask(TASK_CONSUMER_SENT_REQ_OBSERVE, (void *) taskProvider);
+ NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(task,
+ NS_ERROR, NSRemoveProvider_internal(taskProvider));
+
+ NSConsumerPushEvent(task);
+
+ return NS_OK;
+}
+
NSResult NSConsumerSubscribeProvider(NSProvider * provider)
{
NSProvider_internal * provider_internal = (NSProvider_internal *) provider;
OCStackResult ret = NSInvokeRequest(&(connections->messageHandle),
OC_REST_OBSERVE, connections->addr, query, NULL,
NSConsumerMessageListener, NULL, type);
- NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(
- NSOCResultToSuccess(ret), NS_ERROR, NSOICFree(query));
+ NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(NSOCResultToSuccess(ret),
+ NS_ERROR, NSUpdateObserveResult(provider_internal, query));
NSOICFree(query);
NSOICFree(msgUri);
ret = NSInvokeRequest(&(connections->syncHandle),
OC_REST_OBSERVE, connections->addr, query, NULL,
NSConsumerSyncInfoListener, NULL, type);
- NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(
- NSOCResultToSuccess(ret), NS_ERROR, NSOICFree(query));
+ NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(NSOCResultToSuccess(ret),
+ NS_ERROR, NSUpdateObserveResult(provider_internal, query));
NSOICFree(query);
NSOICFree(syncUri);