summaryrefslogtreecommitdiff
path: root/lib/gras_impl/output_buffer_queues.hpp
diff options
context:
space:
mode:
authorJosh Blum2013-04-27 13:05:09 -0700
committerJosh Blum2013-04-27 13:05:09 -0700
commit2464a5780736b71c23cc46d031a62ff30e35d969 (patch)
treed6f2a0e66a06b81219f3a6006bf5f1bae8f8c16b /lib/gras_impl/output_buffer_queues.hpp
parentcf930158eabb585552c9b2691370c5ceb7fc6d76 (diff)
downloadsandhi-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.hpp13
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]);