#include <list>
#include <string>
#include <memory>
+#include <mutex>
#include "CacheTypes.h"
#include "ExpiryTimer.h"
CacheID generateCacheID();
SubscriberInfoPair findSubscriber(CacheID id);
- void notifyObservers(RCSResourceAttributes Att);
+ void notifyObservers(const RCSResourceAttributes Att);
+
+ mutable std::mutex m_mutex;
};
} // namespace Service
} // namespace OIC
newItem.reportID = generateCacheID();
+ std::lock_guard<std::mutex> lock(m_mutex);
if (subscriberList != nullptr)
{
subscriberList->insert(
CacheID ret = 0;
SubscriberInfoPair pair = findSubscriber(id);
+
+ std::lock_guard<std::mutex> lock(m_mutex);
if (pair.first != 0)
{
ret = pair.first;
{
SubscriberInfoPair ret;
+ std::lock_guard<std::mutex> lock(m_mutex);
for (auto &i : *subscriberList)
{
if (i.first == id)
notifyObservers(_rep.getAttributes());
}
- void DataCache::notifyObservers(RCSResourceAttributes Att)
+ void DataCache::notifyObservers(const RCSResourceAttributes Att)
{
if (attributes == Att)
{
attributes = Att;
- RCSResourceAttributes retAtt = Att;
+ std::lock_guard<std::mutex> lock(m_mutex);
for (auto &i : * subscriberList)
{
if (i.second.first.rf == REPORT_FREQUENCY::UPTODATE)
{
- i.second.second(this->sResource, retAtt);
+ i.second.second(this->sResource, Att);
}
}
}
bool DataCache::isEmptySubscriber() const
{
+ std::lock_guard<std::mutex> lock(m_mutex);
return (subscriberList != nullptr) ? subscriberList->empty() : true;
}
} // namespace Service