Add Logic to store NSProvider subscribe information after subscribing
authorYounghyunJoo <yh_.joo@samsung.com>
Tue, 23 Aug 2016 11:58:11 +0000 (20:58 +0900)
committerUze Choi <uzchoi@samsung.com>
Wed, 24 Aug 2016 05:38:41 +0000 (05:38 +0000)
- fix bug for non-storing issue
- fix bug logic which does not push task into the queue when received presence stopped

Change-Id: I0ba93229bfa02361def5bfbf357043ec05e5a4f1
Signed-off-by: YounghyunJoo <yh_.joo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/10759
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
service/notification/src/common/NSConstants.h
service/notification/src/consumer/NSConsumerCommunication.c
service/notification/src/consumer/NSConsumerDiscovery.c
service/notification/src/consumer/NSConsumerInternalTaskController.c
service/notification/src/consumer/NSConsumerScheduler.c

index d05a5e5..a365e51 100644 (file)
@@ -219,7 +219,7 @@ typedef enum eTaskType
     TASK_CONSUMER_REQ_DISCOVER = 8001,
     TASK_CONSUMER_REQ_SUBSCRIBE = 8002,
     TASK_CONSUMER_REQ_SUBSCRIBE_CANCEL = 8003,
-    TASK_CONSUMER_RECV_SUBSCRIBE_CONFIRMED = 8004,
+    TASK_CONSUMER_SENT_REQ_OBSERVE = 8004,
     TASK_CONSUMER_RECV_PROVIDER_CHANGED = 8005,
     TASK_CONSUMER_RECV_MESSAGE = 8101,
 
index ef63b4b..3d7e75b 100644 (file)
@@ -108,6 +108,13 @@ NSResult NSConsumerSubscribeProvider(NSProvider * provider)
         connections = connections->next;
     }
 
+    NSProvider_internal * taskProvider = NSCopyProvider_internal(provider_internal);
+    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;
 }
 
index 96ec822..52bf446 100644 (file)
@@ -72,6 +72,8 @@ OCStackApplicationResult NSConsumerPresenceListener(
 
         NSTask * task = NSMakeTask(TASK_CONSUMER_PROVIDER_DELETED, addr);
         NS_VERIFY_NOT_NULL(task, OC_STACK_KEEP_TRANSACTION);
+
+        NSConsumerPushEvent(task);
     }
 
     else if (payload->trigger == OC_PRESENCE_TRIGGER_CREATE)
index 06742bf..1ec6a7f 100644 (file)
@@ -303,6 +303,14 @@ void NSConsumerHandleProviderDeleted(NSProvider_internal * provider)
     NS_VERIFY_NOT_NULL_V(ret == NS_OK ? (void *)1 : NULL);
 }
 
+void NSConsumerHandleSubscribeSucceed(NSProvider_internal * provider)
+{
+    NS_VERIFY_NOT_NULL_V(provider);
+
+    NSResult ret = NSProviderCacheUpdate(provider);
+    NS_VERIFY_NOT_NULL_V(ret == NS_OK ? (void *) 1 : NULL);
+}
+
 void NSConsumerHandleRecvProviderChanged(NSMessage * msg)
 {
     NS_VERIFY_NOT_NULL_V(msg);
@@ -403,10 +411,15 @@ void NSConsumerInternalTaskProcessing(NSTask * task)
     NS_LOG_V(DEBUG, "Receive Event : %d", (int)task->taskType);
     switch (task->taskType)
     {
-        //case TASK_CONSUMER_RECV_SUBSCRIBE_CONFIRMED:
+        case TASK_CONSUMER_SENT_REQ_OBSERVE:
+        {
+            NS_LOG(DEBUG, "Receive Subscribe succeed from provider.");
+            NSConsumerHandleSubscribeSucceed((NSProvider_internal *)task->taskData);
+            NSRemoveProvider_internal((NSProvider_internal *)task->taskData);
+            break;
+        }
         case TASK_CONSUMER_RECV_PROVIDER_CHANGED:
         {
-            //NS_LOG(DEBUG, "Receive Subscribe confirm from provider.");
             NS_LOG(DEBUG, "Receive Provider Changed");
             NSConsumerHandleRecvProviderChanged((NSMessage *)task->taskData);
             NSRemoveMessage((NSMessage *)task->taskData);
index 7e85eab..55bc75e 100644 (file)
@@ -320,6 +320,7 @@ void NSConsumerTaskProcessing(NSTask * task)
         case TASK_RECV_SYNCINFO:
         case TASK_CONSUMER_RECV_MESSAGE:
         case TASK_CONSUMER_PROVIDER_DISCOVERED:
+        case TASK_CONSUMER_SENT_REQ_OBSERVE:
         case TASK_CONSUMER_RECV_PROVIDER_CHANGED:
         case TASK_MAKE_SYNCINFO:
         case TASK_CONSUMER_REQ_TOPIC_URI: