X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/1bba96ae977208a57bd80c7011c2033435a64d44..5a4a8663668a3af89fe7c4026d08f3e0fb144f05:/process.cpp?ds=sidebyside diff --git a/process.cpp b/process.cpp index 6d791bd..54573d3 100644 --- a/process.cpp +++ b/process.cpp @@ -83,8 +83,7 @@ int process::run() VERB0("Starting..."); comp_iter = lb_iter = 0; while (true) { - double ld = lb_load(); - if (ld > 0.0) { + if (get_load() > 0.0) { double now = MSG_get_clock(); if (now < next_iter_after_date) MSG_process_sleep(next_iter_after_date - now); @@ -101,11 +100,10 @@ int process::run() lb_iter, real_load); } - ld -= load_balance(ld); + load_balance(); print_loads(true, xbt_log_priority_debug); } - lb_load() = ld; // send load information, and load (data) if any send_all(); @@ -130,7 +128,7 @@ int process::run() // block on receiving unless there is something to compute or // to send double timeout; - if (real_load != 0 || lb_load() != prev_load_broadcast) + if (real_load != 0 || get_load() != prev_load_broadcast) timeout = 0.0; else if (opt::min_iter_duration) timeout = opt::min_iter_duration; @@ -174,11 +172,10 @@ int process::run() return 0; } -double process::load_balance(double /*my_load*/) +void process::load_balance() { if (lb_iter == 1) // warn only once WARN0("process::load_balance() is a no-op!"); - return 0.0; } void process::compute() @@ -196,6 +193,13 @@ void process::compute() } } +void process::send(neighbor& nb, double amount) +{ + set_load(get_load() - amount); + nb.set_to_send(nb.get_to_send() + amount); + nb.set_load(nb.get_load() + amount); // fixme: make this optional? +} + void process::send1_no_bookkeeping(neighbor& nb) { if (real_load != prev_load_broadcast)