From e6d6d285cfd7f4d8f63c45bc77cb53943a04a5eb Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Sat, 15 Jun 2013 23:33:18 -0700 Subject: gras: dont update item counts until after work This lets API calls like get_consumed/produced keep their values until after work is called. The propagate tags overload need this to work. --- lib/gras_impl/block_data.hpp | 6 ++++-- lib/gras_impl/input_buffer_queues.hpp | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'lib/gras_impl') diff --git a/lib/gras_impl/block_data.hpp b/lib/gras_impl/block_data.hpp index 170f7c6..8697d48 100644 --- a/lib/gras_impl/block_data.hpp +++ b/lib/gras_impl/block_data.hpp @@ -55,7 +55,6 @@ struct BlockData //buffer queues and ready conditions InputBufferQueues input_queues; OutputBufferQueues output_queues; - std::vector produce_outputs; BitSet inputs_available; std::vector time_input_not_ready; std::vector time_output_not_ready; @@ -64,7 +63,10 @@ struct BlockData std::vector input_tags_changed; std::vector > input_tags; std::vector num_input_msgs_read; - std::vector num_input_bytes_read; + std::vector num_input_items_read; + std::vector num_output_items_read; + std::vector total_items_consumed; + std::vector total_items_produced; std::vector > input_msgs; //interruptible thread stuff diff --git a/lib/gras_impl/input_buffer_queues.hpp b/lib/gras_impl/input_buffer_queues.hpp index 7d31b9a..b9bd1b7 100644 --- a/lib/gras_impl/input_buffer_queues.hpp +++ b/lib/gras_impl/input_buffer_queues.hpp @@ -77,7 +77,7 @@ struct InputBufferQueues } //! Call when input bytes consumed by work - void consume(const size_t i, const size_t bytes_consumed); + void consume(const size_t i, const size_t items_consumed); void resize(const size_t size); @@ -330,8 +330,9 @@ GRAS_FORCE_INLINE void InputBufferQueues::push(const size_t i, const SBuffer &bu } -GRAS_FORCE_INLINE void InputBufferQueues::consume(const size_t i, const size_t bytes_consumed) +GRAS_FORCE_INLINE void InputBufferQueues::consume(const size_t i, const size_t items_consumed) { + const size_t bytes_consumed = items_consumed * _items_sizes[i]; ASSERT(not _queues[i].empty()); ASSERT((bytes_consumed % _items_sizes[i]) == 0); SBuffer &front = _queues[i].front(); -- cgit