From 591905b3a33982a46e8c956d4ca226bb4a241b54 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Sun, 2 Sep 2012 17:09:46 -0700 Subject: created history implementation (untested) --- lib/block_task.cpp | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'lib/block_task.cpp') 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); } //------------------------------------------------------------------ -- cgit