diff options
author | Josh Blum | 2012-09-09 19:41:29 -0700 |
---|---|---|
committer | Josh Blum | 2012-09-09 19:41:29 -0700 |
commit | 0ed890033370ae853014f0d34065d9f566e86e54 (patch) | |
tree | 537e0968d7e10913fbb7e42622571d99f6b9eb0e /lib/block_task.cpp | |
parent | 753237c73815a5c18f29a4bbd9df05b6af8b8e57 (diff) | |
download | sandhi-0ed890033370ae853014f0d34065d9f566e86e54.tar.gz sandhi-0ed890033370ae853014f0d34065d9f566e86e54.tar.bz2 sandhi-0ed890033370ae853014f0d34065d9f566e86e54.zip |
simplify forecast and its fail logic
Diffstat (limited to 'lib/block_task.cpp')
-rw-r--r-- | lib/block_task.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/lib/block_task.cpp b/lib/block_task.cpp index 5b3ae00..b9347e8 100644 --- a/lib/block_task.cpp +++ b/lib/block_task.cpp @@ -157,26 +157,20 @@ void ElementImpl::handle_task(const tsbe::TaskInterface &task_iface) //-- forecast //------------------------------------------------------------------ forecast_again_you_jerk: - if (not this->enable_fixed_rate) + if (this->forecast_enable) { - block_ptr->forecast(num_output_items, work_ninput_items); + fcast_ninput_items = work_ninput_items; + block_ptr->forecast(num_output_items, fcast_ninput_items); for (size_t i = 0; i < num_inputs; i++) { - if (size_t(work_ninput_items[i]) > this->input_items[i].size()) - { - for (size_t j = 0; j < num_inputs; j++) - { - work_ninput_items[j] = this->input_items[j]._len; - } - num_output_items = num_output_items/2; - if (num_output_items == 0) - { - this->forecast_fail = true; - this->conclusion(task_iface, inputs_done); - return; - } - goto forecast_again_you_jerk; - } + if (fcast_ninput_items[i] <= work_ninput_items[i]) continue; + + num_output_items = num_output_items/2; //backoff regime + if (num_output_items) goto forecast_again_you_jerk; + + this->forecast_fail = true; + this->conclusion(task_iface, inputs_done); + return; } } this->forecast_fail = false; |