######################################################################
resourcecache_env.AppendUnique(CPPPATH = ['include'])
resourcecache_env.AppendUnique(CPPPATH = ['../common/primitiveResource/include'])
-resourcecache_env.AppendUnique(CPPPATH = ['../common/primitiveTimer/include'])
-resourcecache_env.PrependUnique(LIBS = ['service_common', 'PrimitiveTimer', 'oc', 'octbstack', 'oc_logger', 'connectivity_abstraction', 'libcoap'])
+resourcecache_env.AppendUnique(CPPPATH = ['../common/expiryTimer/include'])
+resourcecache_env.PrependUnique(LIBS = ['service_common', 'ExpiryTimer', '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'])
CACHE_SRC_DIR + 'ResourceCacheManager.cpp'
]
-if target_os in ['tizen','android'] :
- resourcecachesdk = resourcecache_env.SharedLibrary('ResourceCache', resourcecache_src)
-else :
- resourcecachesdk = resourcecache_env.StaticLibrary('ResourceCache', resourcecache_src)
+resourcecachesdk = resourcecache_env.StaticLibrary('ResourceCache', resourcecache_src)
resourcecache_env.InstallTarget(resourcecachesdk, 'libResouceCache')
# Go to build sample apps
-#SConscript('SampleApp/SConscript')
+SConscript('SampleApp/SConscript')
#include "logger.h"
#include "CacheTypes.h"
-#include "PrimitiveTimer.h"
+#include "ExpiryTimer.h"
class DataCache
{
SubscriberInfoPair findSubscriber(CacheID id);
private:
- // origin resource info
- std::string uri;
- std::string address;
-
// resource instance
PrimitiveResourcePtr sResource;
std::shared_ptr<BaseResource> baseHandler;
// cached data info
ResourceAttributes attributes;
- long updateTime;
CACHE_STATE state;
// subscriber info
std::unique_ptr<SubscriberInfo> subscriberList;
- PrimitiveTimer *timerInstance;
+ // timer info
+ ExpiryTimer *timerInstance;
TimerID expiredTimerId;
// for requestCB from base
#include "ResponseStatement.h"
#include "ResourceAttributes.h"
-#include "PrimitiveTimer.h"
+#include "ExpiryTimer.h"
DataCache::DataCache(
PrimitiveResourcePtr pResource,
{
subscriberList = std::unique_ptr<SubscriberInfo>(new SubscriberInfo());
- timerInstance = new PrimitiveTimer;
+ timerInstance = new ExpiryTimer;
state = CACHE_STATE::READY_YET;
- updateTime = 0l;
pObserveCB = (ObserveCB)(std::bind(&DataCache::onObserve, this,
std::placeholders::_1, std::placeholders::_2,
pResource->requestObserve(pObserveCB);
expiredTimerId = timerInstance->requestTimer(DEFAULT_EXPIRED_TIME, pTimerCB);
}
- else
- {
- // TODO set timer
- TimerID timerId = timerInstance->requestTimer(repeatTime, pTimerCB);
- }
}
DataCache::~DataCache()
{
Report_Info newItem;
newItem.rf = rf;
- newItem.latestReportTime = 0l;
newItem.repeatTime = repeatTime;
+ newItem.timerID = 0;
srand(time(NULL));
newItem.reportID = rand();
}
}
+ TimerID timerId = timerInstance->requestTimer(repeatTime, pTimerCB);
+ newItem.timerID = timerId;
+
subscriberList->insert(std::make_pair(newItem.reportID, std::make_pair(newItem, func)));
+
return newItem.reportID;
}
return ResourceAttributes();
}
const ResourceAttributes retAtt = attributes;
+
return retAtt;
}
attributes = _rep.getAttributes();
+ if(sResource->isObservable())
+ {
+ timerInstance->cancelTimer(expiredTimerId);
+ expiredTimerId = timerInstance->requestTimer(DEFAULT_EXPIRED_TIME, pTimerCB);
+ }
+
// notify!!
ResourceAttributes retAtt = attributes;
for(auto & i : * subscriberList)
expiredTimerId = timerInstance->requestTimer(DEFAULT_EXPIRED_TIME, pTimerCB);
}
else
- TimerID timerId = timerInstance->requestTimer(5l, pTimerCB);
+ {
+ for(auto & i : * subscriberList)
+ {
+ if(i.second.first.timerID == timerID)
+ {
+ TimerID timerId = timerInstance->requestTimer(i.second.first.repeatTime, pTimerCB);
+ i.second.first.timerID = timerId;
+ break;
+ }
+ }
+ }
}
\ No newline at end of file