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

Private GIT Repository
Be consistent and hold mutex in any case when returning from condition_t::timedwait().
[loba.git] / options.h
index 8d89808be9ed759ddcb1398dcf794fe0046e1307..f9baa880f2185051c08d4b7f1626d43eaa34cf22 100644 (file)
--- a/options.h
+++ b/options.h
@@ -1,41 +1,84 @@
 #ifndef OPTIONS_H
 #define OPTIONS_H
 
 #ifndef OPTIONS_H
 #define OPTIONS_H
 
+#include <csignal>              // std::sig_atomic_t
 #include <string>
 #include "cost_func.h"
 #include <string>
 #include "cost_func.h"
+#include "named_object_list.h"
+
+// These classes may use include options.h, so make forward declarations
+class deployment_generator;
+class process;
 
 // Global parameters, shared by all the processes
 namespace opt {
 
 
 // Global parameters, shared by all the processes
 namespace opt {
 
-    extern std::string program_name;
-
-    extern std::string platform_file;
-    extern std::string deployment_file;
+    // Constants
+    extern const double load_ratio_threshold;
 
 
+    // Global options
+    extern std::string program_name;
     extern int help_requested;
     extern bool version_requested;
     extern int help_requested;
     extern bool version_requested;
+    extern int option_x;       // hidden option (int), for testing
+    extern double option_X;    // hidden option (double), for testing
 
 
-    extern unsigned log_rate;
+    // Simulation parameters
+    extern int log_rate;
+    extern volatile std::sig_atomic_t exit_request;
+
+    // Platform and deployment
+    extern std::string platform_file;
+    extern std::string deployment_file;
 
 
+    // Automatic deployment
     namespace auto_depl {
         extern bool        enabled;
         extern std::string topology;
         extern unsigned    nhosts;
         extern double      load;
     namespace auto_depl {
         extern bool        enabled;
         extern std::string topology;
         extern unsigned    nhosts;
         extern double      load;
+        extern bool        random_distribution;
+        extern unsigned long random_seed;
     }
 
     }
 
-    extern std::string topology;
-    extern double init_load;
-
-    extern unsigned maxiter;
-    extern bool exit_on_close;
-
+    // Load balancing algorithm
+    extern std::string loba_algo;
     extern bool bookkeeping;
     extern bool bookkeeping;
+    extern bool egocentric;
+    extern double min_transfer_amount;
+    extern double max_transfer_amount;
+    extern double min_lb_iter_duration;
+    extern bool integer_transfer;
+    extern unsigned loba_best_divisor;
 
 
+    // Application parameters
     extern cost_func comp_cost;
     extern cost_func comm_cost;
     extern cost_func comp_cost;
     extern cost_func comm_cost;
+    extern double min_comp_iter_duration;
+    extern unsigned comp_iter_delay;
+    extern double comp_time_delay;
+
+    // Parameters for the end of the simulation
+    extern double avg_load_ratio;
+    extern unsigned lb_maxiter;
+    extern unsigned comp_maxiter;
+    extern double time_limit;
+    extern unsigned exit_on_convergence;
+    extern bool exit_on_close;
+
+    // Named parameters lists
+    extern struct loba_algorithms_type:
+        public named_object_list2<process, int, char** > {
+            loba_algorithms_type();
+    } loba_algorithms;
+
+    extern struct topologies_type:
+        public named_object_list<deployment_generator> {
+            topologies_type();
+    } topologies;
 
 
-    int parse_args(int* argc, char* argv[]);
+    // Utility functions
+    bool parse_args(int* argc, char* argv[]);
     void print();
     void usage();
 
     void print();
     void usage();