]> AND Private Git Repository - loba.git/blobdiff - process.cpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Add BUGS and review TODO.
[loba.git] / process.cpp
index 6d791bdc94e1c6a3a99cfca44ad0b24a57beb155..54573d376232ab2d9a973db2ef8a9c9d2095a1ea 100644 (file)
@@ -83,8 +83,7 @@ int process::run()
     VERB0("Starting...");
     comp_iter = lb_iter = 0;
     while (true) {
     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);
             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);
             }
 
                           lb_iter, real_load);
             }
 
-            ld -= load_balance(ld);
+            load_balance();
 
             print_loads(true, xbt_log_priority_debug);
         }
 
             print_loads(true, xbt_log_priority_debug);
         }
-        lb_load() = ld;
 
         // send load information, and load (data) if any
         send_all();
 
         // 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;
         // 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;
             timeout = 0.0;
         else if (opt::min_iter_duration)
             timeout = opt::min_iter_duration;
@@ -174,11 +172,10 @@ int process::run()
     return 0;
 }
 
     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!");
 {
     if (lb_iter == 1)           // warn only once
         WARN0("process::load_balance() is a no-op!");
-    return 0.0;
 }
 
 void process::compute()
 }
 
 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)
 void process::send1_no_bookkeeping(neighbor& nb)
 {
     if (real_load != prev_load_broadcast)