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

Private GIT Repository
Add load balancing algorithm selection facility.
[loba.git] / main.cpp
index f171425222fa928cb2d9fcc7312183025b35a2f6..1b462c2549769741c19876caaae41f4d2bbdeba8 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -3,6 +3,7 @@
 #include <stdexcept>
 #include <msg/msg.h>
 #include <xbt/log.h>
 #include <stdexcept>
 #include <msg/msg.h>
 #include <xbt/log.h>
+#include "deployment.h"
 #include "hostdata.h"
 #include "misc.h"
 #include "options.h"
 #include "hostdata.h"
 #include "misc.h"
 #include "options.h"
@@ -28,13 +29,13 @@ enum {
     EXIT_FAILURE_CLEAN = 0x08,  // error at cleanup
 };
 
     EXIT_FAILURE_CLEAN = 0x08,  // error at cleanup
 };
 
-#include "loba_least_loaded.h"
+#include "loba_simple.h"
 int simulation_main(int argc, char* argv[])
 {
     int result;
     process* proc;
     try {
 int simulation_main(int argc, char* argv[])
 {
     int result;
     process* proc;
     try {
-        proc = new loba_least_loaded(argc, argv);
+        proc = opt::loba_algorithms.new_instance(opt::loba_algo, argc, argv);
         result = proc->run();
         delete proc;
     }
         result = proc->run();
         delete proc;
     }
@@ -83,21 +84,19 @@ int main(int argc, char* argv[])
     TRY {
         exit_status = EXIT_FAILURE_INIT; // =====
 
     TRY {
         exit_status = EXIT_FAILURE_INIT; // =====
 
-        // Register the main function of an agent in a global table.
-        MSG_function_register("simulation_main", simulation_main);
+        // Register the default function of an agent
+        // MSG_function_register("simulation_main", simulation_main);
+        MSG_function_register_default(simulation_main);
 
         // Create the platform and the application.
         MSG_create_environment(opt::platform_file.c_str());
         hostdata::create();
         if (opt::auto_depl::enabled) {
 
         // Create the platform and the application.
         MSG_create_environment(opt::platform_file.c_str());
         hostdata::create();
         if (opt::auto_depl::enabled) {
-            opt::auto_depl::nhosts = hostdata::size();
-            opt::auto_depl::load = hostdata::size();
-            try {
-                // fixme: do auto deployment
-            }
-            catch (std::exception& e) {
-                THROW1(0, 0, "%s", e.what());
-            }
+            if (!opt::auto_depl::nhosts)
+                opt::auto_depl::nhosts = hostdata::size();
+            if (!opt::auto_depl::load)
+                opt::auto_depl::load = hostdata::size();
+            MY_launch_application(); // it is already opt::* aware...
         } else {
             MSG_launch_application(opt::deployment_file.c_str());
         }
         } else {
             MSG_launch_application(opt::deployment_file.c_str());
         }