diff options
Diffstat (limited to 'src/server/shared/Threading/LockedQueue.h')
-rwxr-xr-x | src/server/shared/Threading/LockedQueue.h | 16 |
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() { |