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

Private GIT Repository
Factorize computation of load_to_send.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Mon, 6 Jun 2011 09:01:37 +0000 (11:01 +0200)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Mon, 6 Jun 2011 09:01:37 +0000 (11:01 +0200)
process.cpp
process.h

index 47dd94a19d1030db12c4e55c1cd9683ff1560176..45d06211d7c830d475d4fa01d54c0315cc5c1f70 100644 (file)
@@ -303,26 +303,24 @@ void process::ctrl_send(neighbor& nb)
     }
 }
 
+double process::compute_load_to_send(double desired)
+{
+    return desired >= opt::min_transfer_amount ? desired : 0.0;
+}
+
 void process::data_send(neighbor& nb)
 {
     double load_to_send;
     if (opt::bookkeeping) {
-        load_to_send = std::min(real_load, nb.get_debt());
-        if (load_to_send >= opt::min_transfer_amount) {
+        load_to_send = compute_load_to_send(std::min(real_load, nb.get_debt()));
+        if (load_to_send > 0.0)
             nb.set_debt(nb.get_debt() - load_to_send);
-            real_load -= load_to_send;
-        } else {
-            load_to_send = 0.0;
-        }
     } else {
-        load_to_send = nb.get_to_send();
-        if (load_to_send >= opt::min_transfer_amount) {
-            nb.set_to_send(0.0);
-            real_load -= load_to_send;
-        } else {
-            load_to_send = 0.0;
-        }
+        load_to_send = compute_load_to_send(nb.get_to_send());
+        if (load_to_send > 0.0)
+            nb.set_to_send(nb.get_to_send() - load_to_send);
     }
+    real_load -= load_to_send;
     while (load_to_send > 0.0) {
         double amount;
         if (opt::max_transfer_amount)
index 57ece07203d300e2d264d8096c3958d654e34439..8a9e74c3d63da11bd185dfc525b567cf694e6b61 100644 (file)
--- a/process.h
+++ b/process.h
@@ -153,6 +153,9 @@ private:
     // Returns the sum of "to_send" for all neighbors.
     double get_sum_of_to_send() const;
 
+    // Compute load_to_send (for data_send), subject to the execution parameters
+    static double compute_load_to_send(double desired);
+
     // Send procedures
     void ctrl_send(neighbor& nb);
     void data_send(neighbor& nb);