31 void set(
const T &value)
51template<
typename Key,
typename T,
typename Caller,
typename CallerData>
56 std::pair<Caller, CallerData>
caller;
59template<
typename Key,
typename T,
typename Caller,
typename CallerData>
63template<
typename Caller,
typename Data,
typename Key,
typename T>
71template<
typename Key,
typename T,
typename Caller,
typename CallerData>
94template<
typename Key,
typename T,
typename Caller,
typename CallerData>
106 void add(
const Key &key, Caller caller, CallerData callerdata,
112 for (
auto &request :
m_queue.getQueue()) {
113 if (request.key != key)
117 for (
auto &ca : request.callers) {
118 if (ca.caller == caller) {
119 ca.data = callerdata;
127 ca.
data = callerdata;
129 request.callers.
push_back(std::move(ca));
139 ca.
data = callerdata;
141 request.
callers.push_back(std::move(ca));
143 m_queue.push_back(std::move(request));
148 return m_queue.pop_front(timeout_ms);
153 return m_queue.pop_frontNoEx();
163 result.
caller.first = ca.caller;
164 result.
caller.second = ca.data;
166 ca.dest->push_back(std::move(result));
ResultQueue< Key, T, Caller, Data > * dest
Definition thread.h:68
Data data
Definition thread.h:67
Caller caller
Definition thread.h:66
std::vector< caller_info_type > callers
Definition thread.h:84
Key key
Definition thread.h:83
GetRequest(const Key &a_key)
Definition thread.h:79
CallerInfo< Caller, CallerData, Key, T > caller_info_type
Definition thread.h:74
T item
Definition thread.h:55
std::pair< Caller, CallerData > caller
Definition thread.h:56
Key key
Definition thread.h:54
Definition container.h:126
void push_back(const T &t)
Definition container.h:139
MutexedVariable(const T &value)
Definition thread.h:20
MutexedVariable()
Definition thread.h:18
T m_value
Definition thread.h:44
std::mutex m_mutex
Definition thread.h:45
void set(T &&value)
Definition thread.h:37
void set(const T &value)
Definition thread.h:31
T get()
Definition thread.h:25
MutexedVariable(T &&value)
Definition thread.h:22
Notes for RequestQueue usage.
Definition thread.h:95
GetResult< Key, T, Caller, CallerData > result_type
Definition thread.h:98
bool empty() const
Definition thread.h:101
void add(const Key &key, Caller caller, CallerData callerdata, result_queue_type *dest)
Definition thread.h:106
MutexedQueue< request_type > m_queue
Definition thread.h:171
void pushResult(const request_type &req, const T &res)
Definition thread.h:156
GetRequest< Key, T, Caller, CallerData > request_type
Definition thread.h:97
request_type pop()
Definition thread.h:151
ResultQueue< Key, T, Caller, CallerData > result_queue_type
Definition thread.h:99
request_type pop(unsigned int timeout_ms)
Definition thread.h:146
Definition semaphore.h:18
void post(unsigned int num=1)
Definition semaphore.cpp:70
void wait()
Definition semaphore.cpp:85
bool stop()
Definition thread.cpp:140
bool stopRequested() const
Definition thread.h:92
virtual void doUpdate()=0
UpdateThread(const std::string &name)
Definition thread.h:177
void deferUpdate()
Definition thread.h:180
Semaphore m_update_sem
Definition thread.h:213
void * run()
Definition thread.h:190
void stop()
Definition thread.h:182
#define END_DEBUG_EXCEPTION_HANDLER
Definition debug.h:77
#define BEGIN_DEBUG_EXCEPTION_HANDLER
Definition debug.h:76
std::lock_guard< std::mutex > MutexAutoLock
Definition mutex_auto_lock.h:31