diff options
author | Josh Blum | 2013-04-27 13:05:09 -0700 |
---|---|---|
committer | Josh Blum | 2013-04-27 13:05:09 -0700 |
commit | 2464a5780736b71c23cc46d031a62ff30e35d969 (patch) | |
tree | d6f2a0e66a06b81219f3a6006bf5f1bae8f8c16b /lib/gras_impl/output_buffer_queues.hpp | |
parent | cf930158eabb585552c9b2691370c5ceb7fc6d76 (diff) | |
download | sandhi-2464a5780736b71c23cc46d031a62ff30e35d969.tar.gz sandhi-2464a5780736b71c23cc46d031a62ff30e35d969.tar.bz2 sandhi-2464a5780736b71c23cc46d031a62ff30e35d969.zip |
gras: moved flush output to consume function in output queues
This cleans up some code in block actor.
The message sending code is now in task_main,
and the consume routine is now the shared one.
Diffstat (limited to 'lib/gras_impl/output_buffer_queues.hpp')
-rw-r--r-- | lib/gras_impl/output_buffer_queues.hpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/gras_impl/output_buffer_queues.hpp b/lib/gras_impl/output_buffer_queues.hpp index deea0e1..251de96 100644 --- a/lib/gras_impl/output_buffer_queues.hpp +++ b/lib/gras_impl/output_buffer_queues.hpp @@ -53,6 +53,19 @@ struct OutputBufferQueues return _queues[i]->front(); } + GRAS_FORCE_INLINE void consume(const size_t i) + { + ASSERT(not this->empty(i)); + SBuffer &buff = this->front(i); + if GRAS_UNLIKELY(buff.length == 0) return; + + //increment buffer for next use + buff.offset += buff.length; + buff.length = 0; + + this->pop(i); + } + GRAS_FORCE_INLINE void pop(const size_t i) { ASSERT(_queues[i]); |