aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Threading/LockedQueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Threading/LockedQueue.h')
-rwxr-xr-xsrc/server/shared/Threading/LockedQueue.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/server/shared/Threading/LockedQueue.h b/src/server/shared/Threading/LockedQueue.h
index 63927ccb2e9..ff03f0c7c10 100755
--- a/src/server/shared/Threading/LockedQueue.h
+++ b/src/server/shared/Threading/LockedQueue.h
@@ -82,6 +82,22 @@ namespace ACE_Based
return true;
}
+ template<class Checker>
+ bool next(T& result, Checker& check)
+ {
+ ACE_Guard<LockType> g(this->_lock);
+
+ if (_queue.empty())
+ return false;
+
+ result = _queue.front();
+ if(!check.Process(result))
+ return false;
+
+ _queue.pop_front();
+ return true;
+ }
+
//! Peeks at the top of the queue. Remember to unlock after use.
T& peek()
{