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

Private GIT Repository
Add support for a constant random, for testing.
[loba.git] / process.h
index ed6e6cf6fbedffc1ab96657aadda320828ca0a2a..8a9e74c3d63da11bd185dfc525b567cf694e6b61 100644 (file)
--- a/process.h
+++ b/process.h
@@ -5,10 +5,10 @@
 //#undef USE_UNORDERED_MAP
 
 #include <algorithm>
 //#undef USE_UNORDERED_MAP
 
 #include <algorithm>
-#include <tr1/functional>
+#include <functional>
 #ifdef USE_UNORDERED_MAP
 #ifdef USE_UNORDERED_MAP
-#  include <tr1/unordered_map>
-#  define MAP_TEMPLATE std::tr1::unordered_map
+#  include <unordered_map>
+#  define MAP_TEMPLATE std::unordered_map
 #else
 #  include <map>
 #  define MAP_TEMPLATE std::map
 #else
 #  include <map>
 #  define MAP_TEMPLATE std::map
@@ -102,6 +102,7 @@ private:
                                 // a same information messages
     double real_load;           // current load
     double expected_load;       // expected load in bookkeeping mode
                                 // a same information messages
     double real_load;           // current load
     double expected_load;       // expected load in bookkeeping mode
+    double received_load;       // load received from neighbors
 
     mutex_t mutex;              // synchronization between threads
     condition_t cond;
 
     mutex_t mutex;              // synchronization between threads
     condition_t cond;
@@ -152,6 +153,9 @@ private:
     // Returns the sum of "to_send" for all neighbors.
     double get_sum_of_to_send() const;
 
     // 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);
     // Send procedures
     void ctrl_send(neighbor& nb);
     void data_send(neighbor& nb);
@@ -169,13 +173,12 @@ private:
 template <typename Compare>
 void process::pneigh_sort_by_load(const Compare& comp)
 {
 template <typename Compare>
 void process::pneigh_sort_by_load(const Compare& comp)
 {
-    using std::tr1::bind;
-    using std::tr1::placeholders::_1;
-    using std::tr1::placeholders::_2;
+    using std::placeholders::_1;
+    using std::placeholders::_2;
     std::sort(pneigh.begin(), pneigh.end(),
     std::sort(pneigh.begin(), pneigh.end(),
-              bind(comp,
-                   bind(&neighbor::get_load, _1),
-                   bind(&neighbor::get_load, _2)));
+              std::bind(comp,
+                        std::bind(&neighbor::get_load, _1),
+                        std::bind(&neighbor::get_load, _2)));
 }
 
 #endif // !PROCESS_H
 }
 
 #endif // !PROCESS_H