diff options
author | Josh Blum | 2012-12-16 02:02:49 -0800 |
---|---|---|
committer | Josh Blum | 2012-12-16 02:02:49 -0800 |
commit | 36b746eb1c43068b999fa56d52aa0d8994dd6ef9 (patch) | |
tree | 498f270aa5052926ee78f42bd2bf2d3311a98046 /lib/buffer_queue_pool.cpp | |
parent | db2933a31db9983cc24d925f5b86db43a466ad36 (diff) | |
download | sandhi-36b746eb1c43068b999fa56d52aa0d8994dd6ef9.tar.gz sandhi-36b746eb1c43068b999fa56d52aa0d8994dd6ef9.tar.bz2 sandhi-36b746eb1c43068b999fa56d52aa0d8994dd6ef9.zip |
various fixes for unit tests pass
Diffstat (limited to 'lib/buffer_queue_pool.cpp')
-rw-r--r-- | lib/buffer_queue_pool.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/buffer_queue_pool.cpp b/lib/buffer_queue_pool.cpp index a2a4c28..7a531a4 100644 --- a/lib/buffer_queue_pool.cpp +++ b/lib/buffer_queue_pool.cpp @@ -8,12 +8,19 @@ using namespace gras; struct BufferQueuePool : BufferQueue { - BufferQueuePool(const size_t num): + BufferQueuePool(const SBufferConfig &config, const size_t num): + token(config.token), //save config, its holds token queue(boost::circular_buffer<SBuffer>(num)) { //NOP } + ~BufferQueuePool(void) + { + token.reset(); + queue.clear(); + } + SBuffer &front(void) { ASSERT(not queue.empty()); @@ -24,13 +31,12 @@ struct BufferQueuePool : BufferQueue void pop(void) { ASSERT(not queue.empty()); - queue.front() = SBuffer(); //dont hold ref + queue.front().reset(); //dont hold ref queue.pop_front(); } void push(const SBuffer &buff) { - ASSERT(buff); queue.push_back(buff); } @@ -39,6 +45,7 @@ struct BufferQueuePool : BufferQueue return queue.empty(); } + SBufferToken token; boost::circular_buffer<SBuffer> queue; }; @@ -47,12 +54,14 @@ BufferQueueSptr BufferQueue::make_pool( const SBufferConfig &config, const size_t num_buffs ){ - BufferQueueSptr bq(new BufferQueuePool(num_buffs)); + BufferQueueSptr queue(new BufferQueuePool(config, num_buffs)); + for (size_t i = 0; i < num_buffs; i++) { SBuffer buff(config); std::memset(buff.get_actual_memory(), 0, buff.get_actual_length()); //bq->push(buff); } - return bq; + + return queue; } |