X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/3bbce140c762cb8f3aaf9526e835aaa72cdec632..bd0d55b6e8fb8c48072740d52c09af1f0b043f2f:/loba_simple.cpp

diff --git a/loba_simple.cpp b/loba_simple.cpp
index 26622c8..5a0a153 100644
--- a/loba_simple.cpp
+++ b/loba_simple.cpp
@@ -8,15 +8,15 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba);
  *   load balance with a least-loaded neighbor,
  *   without breaking the ping-pong condition
  */
-double loba_simple::load_balance(double my_load)
+void loba_simple::load_balance()
 {
     int imin = -1;
     int imax = -1;
-    double min = my_load;
+    double min = get_load();
     double max = -1.0;
     for (unsigned i = 0 ; i < pneigh.size() ; ++i) {
         double l = pneigh[i]->get_load();
-        if (l >= my_load)
+        if (l >= get_load())
             continue;
         if (l < min) {
             imin = i;
@@ -27,15 +27,12 @@ double loba_simple::load_balance(double my_load)
             max = l;
         }
     }
-    if (imin != -1) {
-        // found someone
-        double balance = (my_load - max) / 2;
-        DEBUG6("%d:%g %d:%g %g %g", imin, min, imax, max, my_load, balance);
-        pneigh[imin]->set_to_send(balance);
-        pneigh[imin]->add_load(balance);
-        return balance;
-    } else {
-        return 0.0;
+    if (imin != -1) {           // found someone
+        double balance = std::min((get_load() - min) / 2.0,
+                                  (get_load() - max));
+        XBT_DEBUG("%d:%g %d:%g %g %g",
+                  imin, min, imax, max, get_load(), balance);
+        send(pneigh[imin], balance);
     }
 }