summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJosh Blum2012-12-01 00:34:27 -0800
committerJosh Blum2012-12-01 00:34:27 -0800
commitf38298e9e5d930a16d27b3e2ef12931a7eff52eb (patch)
treebca743e2f3a4ed3c9cb6ece31850c6421da6c763 /lib
parent0dea1563a4e13bd6081acc2ed5f4c611bdfbb9af (diff)
downloadsandhi-f38298e9e5d930a16d27b3e2ef12931a7eff52eb.tar.gz
sandhi-f38298e9e5d930a16d27b3e2ef12931a7eff52eb.tar.bz2
sandhi-f38298e9e5d930a16d27b3e2ef12931a7eff52eb.zip
mark fail: not ready until a new buffer appears
Diffstat (limited to 'lib')
-rw-r--r--lib/block_task.cpp3
-rw-r--r--lib/gras_impl/input_buffer_queues.hpp5
-rw-r--r--lib/gras_impl/output_buffer_queues.hpp5
3 files changed, 13 insertions, 0 deletions
diff --git a/lib/block_task.cpp b/lib/block_task.cpp
index b2b08db..9e5917d 100644
--- a/lib/block_task.cpp
+++ b/lib/block_task.cpp
@@ -79,6 +79,9 @@ void BlockActor::input_fail(const size_t i)
{
throw std::runtime_error("input_fail called on maximum_items buffer");
}
+
+ //mark fail: not ready until a new buffer appears
+ this->input_queues.fail(i);
}
void BlockActor::output_fail(const size_t i)
diff --git a/lib/gras_impl/input_buffer_queues.hpp b/lib/gras_impl/input_buffer_queues.hpp
index f81f226..a6b6ff8 100644
--- a/lib/gras_impl/input_buffer_queues.hpp
+++ b/lib/gras_impl/input_buffer_queues.hpp
@@ -126,6 +126,11 @@ struct InputBufferQueues
_bitset.reset(i);
}
+ GRAS_FORCE_INLINE void fail(const size_t i)
+ {
+ _bitset.reset(i);
+ }
+
size_t size(void) const
{
return _queues.size();
diff --git a/lib/gras_impl/output_buffer_queues.hpp b/lib/gras_impl/output_buffer_queues.hpp
index c432f4d..722a4c2 100644
--- a/lib/gras_impl/output_buffer_queues.hpp
+++ b/lib/gras_impl/output_buffer_queues.hpp
@@ -56,6 +56,11 @@ struct OutputBufferQueues
_bitset.set(i, not _queues[i].empty());
}
+ GRAS_FORCE_INLINE void fail(const size_t i)
+ {
+ _bitset.reset(i);
+ }
+
GRAS_FORCE_INLINE void flush(const size_t i)
{
_queues[i].clear();