diff options
author | Josh Blum | 2012-12-15 09:53:25 -0800 |
---|---|---|
committer | Josh Blum | 2012-12-15 09:53:25 -0800 |
commit | b7c0a59c0a86f289f55935b19efaf448e892eefb (patch) | |
tree | 1e641f9816237481124835ac2fbf2792a8b1d50f /lib/gras_impl/simple_buffer_queue.hpp | |
parent | 6a03c661ede88203ff90eb01bf1e678b87cb6056 (diff) | |
download | sandhi-b7c0a59c0a86f289f55935b19efaf448e892eefb.tar.gz sandhi-b7c0a59c0a86f289f55935b19efaf448e892eefb.tar.bz2 sandhi-b7c0a59c0a86f289f55935b19efaf448e892eefb.zip |
work on the buffer queue api
Diffstat (limited to 'lib/gras_impl/simple_buffer_queue.hpp')
-rw-r--r-- | lib/gras_impl/simple_buffer_queue.hpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/gras_impl/simple_buffer_queue.hpp b/lib/gras_impl/simple_buffer_queue.hpp new file mode 100644 index 0000000..db6ecc0 --- /dev/null +++ b/lib/gras_impl/simple_buffer_queue.hpp @@ -0,0 +1,50 @@ +// Copyright (C) by Josh Blum. See LICENSE.txt for licensing information. + +#ifndef INCLUDED_LIBGRAS_IMPL_SIMPLE_BUFFER_QUEUE_HPP +#define INCLUDED_LIBGRAS_IMPL_SIMPLE_BUFFER_QUEUE_HPP + +#include <gras/sbuffer.hpp> +#include <boost/bind.hpp> +#include <queue> + +namespace gras +{ + +struct SimpleBufferQueue : std::queue<SBuffer> +{ + SimpleBufferQueue(void) + { + SBufferDeleter deleter = boost::bind(&SimpleBufferQueue::push_back, this, _1); + _token = SBufferToken(new SBufferDeleter(deleter)); + } + + ~SimpleBufferQueue(void) + { + _token.reset(); + while (not this->empty()) + { + this->pop(); + } + } + + void push_back(const SBuffer &buff) + { + this->push(buff); + } + + void allocate_one(const size_t num_bytes) + { + SBufferConfig config; + config.memory = NULL; + config.length = num_bytes; + config.token = _token; + SBuffer buff(config); + //buffer derefs here and the token messages it back to the queue + } + + SBufferToken _token; +}; + +} //namespace gras + +#endif /*INCLUDED_LIBGRAS_IMPL_SIMPLE_BUFFER_QUEUE_HPP*/ |