summaryrefslogtreecommitdiff
path: root/lib/block_task.cpp
diff options
context:
space:
mode:
authorJosh Blum2012-09-02 17:09:46 -0700
committerJosh Blum2012-09-02 17:09:46 -0700
commit591905b3a33982a46e8c956d4ca226bb4a241b54 (patch)
tree897a168667fa8048e816a131428f81c830892942 /lib/block_task.cpp
parent814be255443ef4ada223375263ee3d2ad43540c1 (diff)
downloadsandhi-591905b3a33982a46e8c956d4ca226bb4a241b54.tar.gz
sandhi-591905b3a33982a46e8c956d4ca226bb4a241b54.tar.bz2
sandhi-591905b3a33982a46e8c956d4ca226bb4a241b54.zip
created history implementation (untested)
Diffstat (limited to 'lib/block_task.cpp')
-rw-r--r--lib/block_task.cpp24
1 files changed, 6 insertions, 18 deletions
diff --git a/lib/block_task.cpp b/lib/block_task.cpp
index a84ef6a..88ca5cf 100644
--- a/lib/block_task.cpp
+++ b/lib/block_task.cpp
@@ -94,19 +94,14 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface)
{
input_tokens_count += this->input_tokens[i].use_count();
- ASSERT(this->input_history_items[i] == 0);
-
ASSERT(this->input_queues.ready(i));
- const tsbe::Buffer &buff = this->input_queues.front(i);
- ASSERT(this->input_buff_offsets[i] < buff.get_length());
- char *mem = ((char *)buff.get_memory()) + this->input_buff_offsets[i];
- const size_t bytes = buff.get_length() - this->input_buff_offsets[i];
- const size_t items = bytes/this->input_items_sizes[i];
+ const BuffInfo info = this->input_queues.front(i);
+ const size_t items = info.len/this->input_items_sizes[i];
- this->work_io_ptr_mask |= ptrdiff_t(mem);
- this->input_items[i]._mem = mem;
+ this->work_io_ptr_mask |= ptrdiff_t(info.mem);
+ this->input_items[i]._mem = info.mem;
this->input_items[i]._len = items;
- this->work_input_items[i] = mem;
+ this->work_input_items[i] = info.mem;
this->work_ninput_items[i] = items;
}
@@ -172,14 +167,7 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface)
this->items_consumed[i] += items;
const size_t bytes = items*this->input_items_sizes[i];
- this->input_buff_offsets[i] += bytes;
- tsbe::Buffer &buff = this->input_queues.front(i);
-
- if (buff.get_length() <= this->input_buff_offsets[i])
- {
- this->input_queues.pop(i);
- this->input_buff_offsets[i] = 0;
- }
+ this->input_queues.pop(i, bytes);
}
//------------------------------------------------------------------