1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21 #include "ResourceCacheManager.h"
23 ResourceCacheManager * ResourceCacheManager::s_instance = NULL;
24 std::mutex ResourceCacheManager::s_mutexForCreation;
25 std::list< DataCache * > * ResourceCacheManager::s_cacheDataList = NULL;
27 ResourceCacheManager::ResourceCacheManager()
29 // TODO Auto-generated constructor stub
32 s_cacheDataList = new std::list< DataCache * >();
36 ResourceCacheManager::~ResourceCacheManager()
38 // TODO Auto-generated destructor stub
41 s_cacheDataList->clear();
42 delete s_cacheDataList;
47 ResourceCacheManager * ResourceCacheManager::getInstance()
51 s_mutexForCreation.lock();
54 s_instance = new ResourceCacheManager();
56 s_mutexForCreation.unlock();
61 CacheID ResourceCacheManager::requestResourceCache(
62 PrimitiveResource & pResource, CacheCB func, REPORT_FREQUENCY rf, long reportTime)
66 if(rt == NULL || pResource == NULL)
71 if(rt != REPORT_FREQUENCY::NONE)
84 DataCache * newHandler = findCacheHandler(pResource);
85 if(newHandler == nullptr)
87 DataCache * newHandler = new DataCache(pResource, func, rf, reportTime);
88 s_cacheDataList->push_back(newHandler);
90 ret = newHandler->addSubscriber(func, rf, reportTime);
95 OCStackResult ResourceCacheManager::cancelResourceCache(PrimitiveResource & pResource, CacheID id)
97 OCStackResult ret = OC_STACK_ERROR;
99 if(pResource == NULL || id == 0)
106 DataCache * deleteCacheHandler = findCacheHandler(pResource);
107 if(deleteCacheHandler == nullptr)
113 retID = deleteCacheHandler->deleteSubscriber(id);
124 DataCache * ResourceCacheManager::findCacheHandler(PrimitiveResource & pResource)
126 DataCache * retHandler = nullptr;
127 for (auto i : s_cacheDataList)
129 if(i->getPrimitiveResource() == pResource)
138 OCStackResult ResourceCacheManager::updateResourceCache(PrimitiveResource & pResource)
140 OCStackResult ret = OC_STACK_ERROR;
142 // TODO update now (request get)