33 #ifndef _IDENTT_UTILS_SHARED_MAP_HPP_ 34 #define _IDENTT_UTILS_SHARED_MAP_HPP_ 36 #include <unordered_map> 39 #include <boost/thread/locks.hpp> 40 #include <boost/thread/shared_mutex.hpp> 44 template<
class KeyT,
class ValueT>
47 using MapT = std::unordered_map<KeyT,ValueT>;
48 using LockT = boost::shared_mutex;
49 using WriteLockT = boost::unique_lock< LockT >;
50 using ReadLockT = boost::shared_lock< LockT >;
84 WriteLockT writelock(mutex_);
99 WriteLockT writelock(mutex_);
101 t_[p.first]=p.second;
116 WriteLockT writelock(mutex_);
118 t_[p.first]=p.second;
136 ReadLockT readlock(mutex_);
137 typename MapT::const_iterator it = t_.find(key);
138 bool stat = (it!=t_.end());
139 value = stat ? it.second : ValueT();
157 ReadLockT readlock(mutex_);
158 typename MapT::const_iterator it = t_.find(key);
159 bool stat = (it!=t_.end());
160 value = stat ? it.second : ValueT();
172 ReadLockT readlock(mutex_);
184 ReadLockT readlock(mutex_);
196 WriteLockT writelock(mutex_);
208 WriteLockT writelock(mutex_);
virtual ~SharedMap()
destructor
Definition: SharedMap.hpp:68
bool GetValues(KeyT &&key, ValueT &value)
GetValues : get values by lvalue ref.
Definition: SharedMap.hpp:155
SharedMap()
Constructor : default.
Definition: SharedMap.hpp:63
void Reset()
Reset: clear the set.
Definition: SharedMap.hpp:194
void AddMany(const MapT &m)
AddMany : add from map by address.
Definition: SharedMap.hpp:97
void AddOne(KeyT key, ValueT value)
AddOne : add one value.
Definition: SharedMap.hpp:82
void Swap(MapT t)
Swap : get by swap.
Definition: SharedMap.hpp:206
MapT GetCopy()
GetCopy : get a copy of the map.
Definition: SharedMap.hpp:170
Definition: SharedMap.hpp:45
Definition: CryptoBase.hpp:49
bool GetValues(KeyT &key, ValueT &value)
GetValues : get values by address.
Definition: SharedMap.hpp:134
size_t GetSize()
GetSize: get size of set.
Definition: SharedMap.hpp:182
void AddMany(MapT &&m)
AddMany : add from map by lvalue ref.
Definition: SharedMap.hpp:114