Add Resource Cache feature that checks validation of the cached datas and if they...
authorYounghyunJoo <yh_.joo@samsung.com>
Tue, 30 Jun 2015 08:50:20 +0000 (17:50 +0900)
committerUze Choi <uzchoi@samsung.com>
Wed, 1 Jul 2015 02:17:53 +0000 (02:17 +0000)
Modify Get & Observe Callback function to check expired time.

Change-Id: I7282ad485cebbf8f5c66eac10d24f8aaeac4be83
Signed-off-by: YounghyunJoo <yh_.joo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1450
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/resource-manipulation/modules/resourceCache/include/CacheTypes.h
service/resource-manipulation/modules/resourceCache/include/DataCache.h
service/resource-manipulation/modules/resourceCache/src/DataCache.cpp

index d222891..50eb43e 100755 (executable)
@@ -34,6 +34,7 @@
 
 #define CACHE_TAG  PCF("CACHE")
 #define DEFAULT_REPORT_TIME 30
+#define DEFAULT_EXPIRED_TIME 15l
 
 using namespace OIC::Service;
 
index 8029b24..1c53b31 100755 (executable)
@@ -68,6 +68,7 @@ private:
     std::unique_ptr<SubscriberInfo> subscriberList;
 
     PrimitiveTimer *timerInstance;
+    TimerID expiredTimerId;
 
     // for requestCB from base
     void onObserve(const HeaderOptions& _hos,
index c7fcace..61f6dd8 100755 (executable)
@@ -57,6 +57,7 @@ DataCache::DataCache(
     if(pResource->isObservable())
     {
         pResource->requestObserve(pObserveCB);
+        expiredTimerId = timerInstance->requestTimer(DEFAULT_EXPIRED_TIME, pTimerCB);
     }
     else
     {
@@ -182,10 +183,20 @@ void DataCache::onGet(const HeaderOptions& _hos,
     {
         state = CACHE_STATE::READY;
         attributes = _rep.getAttributes();
+        if(sResource->isObservable())
+        {
+            timerInstance->cancelTimer(expiredTimerId);
+            expiredTimerId = timerInstance->requestTimer(DEFAULT_EXPIRED_TIME, pTimerCB);
+        }
     }
     else
     {
         attributes = _rep.getAttributes();
+        if(sResource->isObservable())
+        {
+            timerInstance->cancelTimer(expiredTimerId);
+            expiredTimerId = timerInstance->requestTimer(DEFAULT_EXPIRED_TIME, pTimerCB);
+        }
 
         ResourceAttributes retAtt = attributes;
         for(auto & i : * subscriberList)
@@ -206,5 +217,10 @@ CACHE_STATE DataCache::getCacheState() const
 void *DataCache::onTimer(const unsigned int timerID)
 {
     sResource->requestGet(pGetCB);
-    TimerID timerId = timerInstance->requestTimer(5l, pTimerCB);
+    if(sResource->isObservable())
+    {
+        expiredTimerId = timerInstance->requestTimer(DEFAULT_EXPIRED_TIME, pTimerCB);
+    }
+    else
+        TimerID timerId = timerInstance->requestTimer(5l, pTimerCB);
 }
\ No newline at end of file