- GetRequest<Key, T, Caller, CallerData> &request = *i;
-
- if(request.key == key)
- {
- for(typename std::list< CallerInfo<Caller, CallerData, Key, T> >::iterator
- i = request.callers.begin();
- i != request.callers.end(); ++i)
- {
- CallerInfo<Caller, CallerData, Key, T> &ca = *i;
- if(ca.caller == caller)
- {
+ MutexAutoLock lock(m_queue.getMutex());
+
+ /*
+ If the caller is already on the list, only update CallerData
+ */
+ for (i = m_queue.getQueue().begin(); i != m_queue.getQueue().end(); ++i) {
+ GetRequest<Key, T, Caller, CallerData> &request = *i;
+ if (request.key != key)
+ continue;
+
+ for (j = request.callers.begin(); j != request.callers.end(); ++j) {
+ CallerInfo<Caller, CallerData, Key, T> &ca = *j;
+ if (ca.caller == caller) {