From d6570a2964cca62323ac6ca19b5d25973f73f45b Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Sun, 27 Mar 2011 16:14:39 -0500 Subject: Add size function to queue container. --- src/include/util/locked/queue.H | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/include/util') diff --git a/src/include/util/locked/queue.H b/src/include/util/locked/queue.H index 651e24a80..f4791ed7b 100644 --- a/src/include/util/locked/queue.H +++ b/src/include/util/locked/queue.H @@ -1,6 +1,7 @@ #ifndef __UTIL_LOCKED_QUEUE_H #define __UTIL_LOCKED_QUEUE_H +#include #include namespace Util @@ -11,16 +12,20 @@ namespace Util class Queue { public: - Queue() : head(NULL), tail(NULL), lock() {}; + Queue() : head(NULL), tail(NULL), count(0), lock() {}; ~Queue() {}; _T* remove(); void insert(_T*); + size_t size(); + protected: _T* head; _T* tail; + size_t count; + _S lock; void __lock(); @@ -44,6 +49,8 @@ namespace Util tail = item->prev; } + count--; + __unlock(); return item; @@ -65,10 +72,24 @@ namespace Util item->next = head; head = head->prev = item; } + + count++; __unlock(); } + template + size_t Queue<_T,locked,_S>::size() + { + size_t sz = 0; + + __lock(); + sz = count; + __unlock(); + + return sz; + } + template void Queue<_T,locked,_S>::__lock() { -- cgit v1.2.1