Add Consumer Logic to update observe result for each connections
authorYounghyunJoo <yh_.joo@samsung.com>
Wed, 24 Aug 2016 05:10:58 +0000 (14:10 +0900)
committerUze Choi <uzchoi@samsung.com>
Wed, 24 Aug 2016 15:16:55 +0000 (15:16 +0000)
- Modify to update result additionally in case of observe fail during while loop

Change-Id: I272db06e182e0ded3c227de571fa15cd736feabe
Signed-off-by: YounghyunJoo <yh_.joo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/10853
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Chihyun Cho <ch79.cho@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/notification/src/consumer/NSConsumerCommunication.c

index 5c0bb29..f9ca253 100644 (file)
@@ -40,6 +40,20 @@ NSTopicLL * NSGetTopicLL(OCClientResponse * clientResponse);
 
 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;
@@ -84,8 +98,8 @@ NSResult NSConsumerSubscribeProvider(NSProvider * 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);
 
@@ -98,8 +112,8 @@ NSResult NSConsumerSubscribeProvider(NSProvider * provider)
         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);