Resource Manipulation: resolve Jira issue IOT-641.
authorjyong2.kim <jyong2.kim@samsung.com>
Sun, 26 Jul 2015 14:24:45 +0000 (23:24 +0900)
committerUze Choi <uzchoi@samsung.com>
Sun, 26 Jul 2015 15:25:16 +0000 (15:25 +0000)
Prevent calling incorrect OC::Platform method.

Change-Id: Ie08b578ac04b768bdcb9404c557749a37acaaf41
Signed-off-by: jyong2.kim <jyong2.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1921
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Hun-je Yeon <hunje.yeon@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/resource-encapsulation/src/resourceCache/include/CacheTypes.h
service/resource-encapsulation/src/resourceCache/include/DataCache.h
service/resource-encapsulation/src/resourceCache/src/DataCache.cpp
service/resource-encapsulation/src/resourceCache/src/ResourceCacheManager.cpp

index 815143a..0f9460e 100644 (file)
@@ -67,6 +67,12 @@ namespace OIC
             NONE
         };
 
+        enum class CACHE_MODE
+        {
+            OBSERVE = 0,
+            FREQUENCY
+        };
+
         typedef int CacheID;
 
         typedef std::function<OCStackResult(std::shared_ptr<PrimitiveResource>,
index 5f16c92..5df1571 100644 (file)
@@ -57,11 +57,12 @@ namespace OIC
             private:
                 // resource instance
                 PrimitiveResourcePtr sResource;
-                std::shared_ptr<BaseResource> baseHandler;
+//                std::shared_ptr<BaseResource> baseHandler;
 
                 // cached data info
                 RCSResourceAttributes attributes;
                 CACHE_STATE state;
+                CACHE_MODE mode;
 
                 // subscriber info
                 std::unique_ptr<SubscriberInfo> subscriberList;
index 988b747..37161a6 100644 (file)
@@ -42,6 +42,7 @@ namespace OIC
             sResource = nullptr;
 
             state = CACHE_STATE::READY_YET;
+            mode = CACHE_MODE::FREQUENCY;
 
             networkTimeOutHandle = 0;
             pollingHandle = 0;
@@ -60,7 +61,10 @@ namespace OIC
         {
             state = CACHE_STATE::DESTROYED;
 
-            sResource->cancelObserve();
+            if(mode == CACHE_MODE::OBSERVE)
+            {
+                sResource->cancelObserve();
+            }
             if (subscriberList != nullptr)
             {
                 subscriberList->clear();
@@ -158,6 +162,11 @@ namespace OIC
                 state = CACHE_STATE::READY;
             }
 
+            if (mode != CACHE_MODE::OBSERVE)
+            {
+                mode = CACHE_MODE::OBSERVE;
+            }
+
             networkTimer.cancelTimer(networkTimeOutHandle);
             networkTimeOutHandle = networkTimer.postTimer(CACHE_DEFAULT_EXPIRED_MILLITIME, pTimerCB);
 
@@ -222,6 +231,7 @@ namespace OIC
         {
             if (sResource != nullptr)
             {
+                mode = CACHE_MODE::FREQUENCY;
                 sResource->requestGet(pGetCB);
             }
             return;
index 121b0d8..8a93de1 100644 (file)
@@ -107,7 +107,7 @@ namespace OIC
                 if (foundCacheHandler->isEmptySubscriber())
                 {
                     s_cacheDataList->remove(foundCacheHandler);
-                    foundCacheHandler.reset();
+//                    foundCacheHandler.reset();
                 }
             }
         }