24#ifndef _CORE_UTILS_LOCK_MULTIMAP_H_
25#define _CORE_UTILS_LOCK_MULTIMAP_H_
27#include <core/threading/mutex.h>
28#include <core/utils/refptr.h>
34template <
typename KeyType,
typename ValueType,
typename LessKey = std::less<KeyType>>
35class LockMultiMap :
public std::multimap<KeyType, ValueType, LessKey>
53 operator=(
const std::map<KeyType, ValueType, LessKey> &l);
70template <
typename KeyType,
typename ValueType,
typename LessKey>
78template <
typename KeyType,
typename ValueType,
typename LessKey>
81: std::map<KeyType, ValueType, LessKey>::map(lm), mutex_(new
Mutex())
86template <
typename KeyType,
typename ValueType,
typename LessKey>
92template <
typename KeyType,
typename ValueType,
typename LessKey>
102template <
typename KeyType,
typename ValueType,
typename LessKey>
106 return mutex_->try_lock();
110template <
typename KeyType,
typename ValueType,
typename LessKey>
114 return mutex_->unlock();
121template <
typename KeyType,
typename ValueType,
typename LessKey>
126 std::map<KeyType, ValueType, LessKey>::erase(key);
134template <
typename KeyType,
typename ValueType,
typename LessKey>
147template <
typename KeyType,
typename ValueType,
typename LessKey>
156 for (i = ll.begin(); i != ll.end(); ++i) {
171template <
typename KeyType,
typename ValueType,
typename LessKey>
177 typename std::map<KeyType, ValueType, LessKey>::const_iterator i;
178 for (i = l.begin(); i != l.end(); ++i) {
void unlock() const
Unlock list.
LockMultiMap(const LockMultiMap< KeyType, ValueType, LessKey > &lm)
Copy constructor.
LockMultiMap< KeyType, ValueType, LessKey > & operator=(const LockMultiMap< KeyType, ValueType, LessKey > &ll)
Copy values from another LockMultiMap.
void lock() const
Lock list.
LockMultiMap< KeyType, ValueType, LessKey > & operator=(const std::map< KeyType, ValueType, LessKey > &l)
Copy values from a standard map.
bool try_lock() const
Try to lock list.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
virtual ~LockMultiMap()
Destructor.
void erase_locked(const KeyType &key)
Remove item with lock.
LockMultiMap()
Constructor.
Mutex mutual exclusion lock.
RefPtr<> is a reference-counting shared smartpointer.
Fawkes library namespace.