X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/72cb21403f86fbb162c8e4555f27234d337b6b6a..a561a2e124710e98e19bafea2b87f577779b68b5:/process.cpp?ds=sidebyside diff --git a/process.cpp b/process.cpp index b36b000..491898d 100644 --- a/process.cpp +++ b/process.cpp @@ -286,20 +286,20 @@ void process::send(neighbor& nb, double amount) void process::ctrl_send(neighbor& nb) { double info_to_send = expected_load; - if (info_to_send != prev_load_broadcast) { - message* msg = new message(message::INFO, info_to_send); - add_ctrl_send_mesg(msg->get_size()); - comm.ctrl_send(nb.get_ctrl_mbox(), msg); - } - if (opt::bookkeeping) { - double debt_to_send = nb.get_to_send(); + double debt_to_send; + if (opt::bookkeeping) { // bookkeeping + debt_to_send = nb.get_to_send(); if (debt_to_send > 0.0) { nb.set_to_send(0.0); nb.set_debt(nb.get_debt() + debt_to_send); - message* msg = new message(message::CREDIT, debt_to_send); - add_ctrl_send_mesg(msg->get_size()); - comm.ctrl_send(nb.get_ctrl_mbox(), msg); } + } else { // !bookkeeping + debt_to_send = 0.0; + } + if (info_to_send != prev_load_broadcast || debt_to_send > 0.0) { + message* msg = new message(message::INFO, info_to_send, debt_to_send); + add_ctrl_send_mesg(msg->get_size()); + comm.ctrl_send(nb.get_ctrl_mbox(), msg); } } @@ -380,11 +380,9 @@ void process::handle_message(message* msg, m_host_t from) case message::INFO: { neighbor* n = rev_neigh[from]; n->set_load(msg->get_amount() + n->get_to_send()); + expected_load += msg->get_credit(); // may be 0.0 if !opt::bookkeeping break; } - case message::CREDIT: - expected_load += msg->get_amount(); - break; case message::LOAD: { double ld = msg->get_amount(); real_load += ld;