From fe15346f1de81bf646605f84b4f9b681d175c044 Mon Sep 17 00:00:00 2001 From: YounghyunJoo Date: Wed, 24 Aug 2016 14:10:58 +0900 Subject: [PATCH] Add Consumer Logic to update observe result for each connections - Modify to update result additionally in case of observe fail during while loop Change-Id: I272db06e182e0ded3c227de571fa15cd736feabe Signed-off-by: YounghyunJoo Reviewed-on: https://gerrit.iotivity.org/gerrit/10853 Tested-by: jenkins-iotivity Reviewed-by: Chihyun Cho Reviewed-by: Uze Choi --- .../src/consumer/NSConsumerCommunication.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/service/notification/src/consumer/NSConsumerCommunication.c b/service/notification/src/consumer/NSConsumerCommunication.c index 5c0bb29..f9ca253 100644 --- a/service/notification/src/consumer/NSConsumerCommunication.c +++ b/service/notification/src/consumer/NSConsumerCommunication.c @@ -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); -- 2.7.4