Update Resource Cache
authorYounghyunJoo <yh_.joo@samsung.com>
Mon, 15 Jun 2015 08:59:51 +0000 (17:59 +0900)
committerUze Choi <uzchoi@samsung.com>
Wed, 17 Jun 2015 05:28:10 +0000 (05:28 +0000)
- Fix Sconscript file to use service common library.
- Fix resourceCache codes for the latest primitive resource.

Change-Id: I9212afd7c6efef9cebfd1d625b997ad37c39df61
Signed-off-by: YounghyunJoo <yh_.joo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1269
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Hun-je Yeon <hunje.yeon@samsung.com>
Reviewed-by: JungYong KIM <jyong2.kim@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/basis/resourceCache/SConscript
service/basis/resourceCache/src/DataCache.cpp
service/basis/resourceCache/src/ResourceCacheManager.cpp

index 89a4062..754f7ad 100644 (file)
@@ -43,7 +43,7 @@ target_os = env.get('TARGET_OS')
 ######################################################################
 resourcecache_env.AppendUnique(CPPPATH = ['include'])
 resourcecache_env.AppendUnique(CPPPATH = ['../common/primitiveResource/include'])
-resourcecache_env.PrependUnique(LIBS = ['oc', 'octbstack', 'oc_logger', 'connectivity_abstraction', 'libcoap'])
+resourcecache_env.PrependUnique(LIBS = ['ServiceCommon', 'oc', 'octbstack', 'oc_logger', 'connectivity_abstraction', 'libcoap'])
 
 if target_os not in ['windows', 'winrt']:
        resourcecache_env.AppendUnique(CXXFLAGS = ['-O2', '-g', '-Wall', '-fmessage-length=0', '-std=c++11'])
@@ -57,9 +57,7 @@ if target_os == 'linux':
 CACHE_SRC_DIR = 'src/'
 resourcecache_src = [
         CACHE_SRC_DIR + 'DataCache.cpp',
-        CACHE_SRC_DIR + 'ResourceCacheManager.cpp',
-        CACHE_SRC_DIR + '../../common/primitiveResource/src/PrimitiveResource.cpp',
-        CACHE_SRC_DIR + '../../common/primitiveResource/src/ResourceAttributes.cpp'
+        CACHE_SRC_DIR + 'ResourceCacheManager.cpp'
         ]
 
 if target_os in ['tizen','android'] :
index b452ba8..38ca2ea 100644 (file)
@@ -54,6 +54,7 @@ DataCache::DataCache(
     if(pResource->isObservable())
     {
         pResource->requestObserve(pObserveCB);
+        pResource->requestGet(pGetCB);
     }
     else
     {
@@ -83,7 +84,7 @@ CacheID DataCache::addSubscriber(CacheCB func, REPORT_FREQUENCY rf, long repeatT
 
     while(1)
     {
-        if(findSubscriber(newItem.reportID).first == 0 || newItem.reportID == 0)
+        if(findSubscriber(newItem.reportID).first != 0 || newItem.reportID == 0)
         {
             newItem.reportID = rand();
         }
@@ -156,6 +157,8 @@ void DataCache::onObserve(
         return;
     }
 
+    state = CACHE_STATE::READY;
+
     ResourceAttributes att = _rep.getAttributes();
 
     // set data
@@ -165,9 +168,8 @@ void DataCache::onObserve(
     for(auto & i : att)
     {
         const std::string &key = i.key();
-//        std::string value = i.value();
-        std::string val;
-        data->insert(CachedData::value_type(key, val));
+        std::string value = i.value().toString();
+        data->insert(CachedData::value_type(key, value));
     }
 
     // notify!!
@@ -184,7 +186,26 @@ void DataCache::onObserve(
 void DataCache::onGet(const HeaderOptions& _hos,
         const ResponseStatement& _rep, int _result)
 {
+    if(state == CACHE_STATE::READY_YET)
+    {
+        state = CACHE_STATE::READY;
+        ResourceAttributes att = _rep.getAttributes();
+
+        // set data
+        data->clear();
 
+
+        for(auto & i : att)
+        {
+            const std::string &key = i.key();
+            std::string value = i.value().toString();
+            data->insert(CachedData::value_type(key, value));
+        }
+    }
+    else
+    {
+
+    }
 }
 
 CACHE_STATE DataCache::getCacheState()
index a27480d..8e178ca 100644 (file)
@@ -79,7 +79,7 @@ CacheID ResourceCacheManager::requestResourceCache(
     DataCachePtr newHandler = findDataCache(pResource);
     if(newHandler == nullptr)
     {
-        DataCachePtr newHandler = std::make_shared<DataCache>(pResource, func, rf, reportTime);
+        newHandler = std::make_shared<DataCache>(pResource, func, rf, reportTime);
         s_cacheDataList->push_back(newHandler);
     }
     ret = newHandler->addSubscriber(func, rf, reportTime);