Change a timeout for resource discovery in cloud provisioning
authorParkhi <h_w.park@samsung.com>
Fri, 28 Oct 2016 07:51:28 +0000 (16:51 +0900)
committerUze Choi <uzchoi@samsung.com>
Mon, 31 Oct 2016 07:33:28 +0000 (07:33 +0000)
Change-Id: Id211ff2afab83cdeaaaf68162ca9d5cdbffeca8a
Signed-off-by: Parkhi <h_w.park@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/13851
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
service/easy-setup/mediator/richsdk/inc/RemoteEnrollee.h
service/easy-setup/mediator/richsdk/src/RemoteEnrollee.cpp

index a58dacb..30ef55c 100755 (executable)
@@ -39,6 +39,8 @@ namespace OIC
         class CloudResource;
         class EnrolleeSecurity;
 
+        typedef std::function<void(const std::shared_ptr<OC::OCResource> resource)>  onDeviceDiscoveredCb;
+
         /**
          * This class represents Remote Enrollee device instance. What operation the class provides:
          * 1) Ownership transfer for enabling secured communication between Mediator and Enrollee
@@ -47,7 +49,7 @@ namespace OIC
          * 3) Provision Device confiruation setting, i.e. language, country, and etc
          * 4) Provision Cloud information used for which Enrollee is going to register to the cloud
          */
-        class RemoteEnrollee
+        class RemoteEnrollee : public std::enable_shared_from_this<RemoteEnrollee>
         {
         public:
             ~RemoteEnrollee() = default;
@@ -124,6 +126,10 @@ namespace OIC
             RemoteEnrollee(const std::shared_ptr< OC::OCResource > resource);
 
             ESResult discoverResource();
+
+            static void onDiscoveredCallback(const std::shared_ptr<OC::OCResource> resource,
+            std::weak_ptr<RemoteEnrollee> this_ptr);
+
             void onDeviceDiscovered(const std::shared_ptr<OC::OCResource> resource);
             void initCloudResource();
 
index 00c5df7..fc0b48a 100755 (executable)
@@ -37,7 +37,7 @@ namespace OIC
     {
         static const char ES_BASE_RES_URI[] = "/oic/res";
         #define ES_REMOTE_ENROLLEE_TAG "ES_REMOTE_ENROLLEE"
-        #define DISCOVERY_TIMEOUT 5
+        #define DISCOVERY_TIMEOUT 1
 
         RemoteEnrollee::RemoteEnrollee(const std::shared_ptr< OC::OCResource > resource)
         {
@@ -120,6 +120,17 @@ namespace OIC
             OIC_LOG(DEBUG, ES_REMOTE_ENROLLEE_TAG, "cloudPropProvisioningStatusHandler OUT");
         }
 
+        void RemoteEnrollee::onDiscoveredCallback(const std::shared_ptr<OC::OCResource> resource,
+            std::weak_ptr<RemoteEnrollee> this_ptr)
+        {
+            OIC_LOG_V(DEBUG,ES_REMOTE_ENROLLEE_TAG,"onDiscoveredCallback()");
+            std::shared_ptr<RemoteEnrollee> Ptr = this_ptr.lock();
+            if(Ptr)
+            {
+                Ptr->onDeviceDiscovered(resource);
+            }
+        }
+
         void RemoteEnrollee::onDeviceDiscovered(std::shared_ptr<OC::OCResource> resource)
         {
             OIC_LOG (DEBUG, ES_REMOTE_ENROLLEE_TAG, "onDeviceDiscovered IN");
@@ -180,11 +191,11 @@ namespace OIC
 
             m_discoveryResponse = false;
 
-            std::function< void (std::shared_ptr<OC::OCResource>) > onDeviceDiscoveredCb =
-                    std::bind(&RemoteEnrollee::onDeviceDiscovered, this,
-                                                    std::placeholders::_1);
-            OCStackResult result = OC::OCPlatform::findResource("", query, CT_DEFAULT,
-                    onDeviceDiscoveredCb);
+            onDeviceDiscoveredCb cb = std::bind(&RemoteEnrollee::onDiscoveredCallback,
+                                                std::placeholders::_1,
+                                                shared_from_this());
+
+            OCStackResult result = OC::OCPlatform::findResource("", query, CT_DEFAULT, cb);
 
             if (result != OCStackResult::OC_STACK_OK)
             {