Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
not needed now
[simgrid.git] / src / cxx / Simulation.cxx
index 6461932..0697760 100644 (file)
@@ -1,6 +1,28 @@
+/*\r
+ * Simulation.cxx\r
+ *\r
+ * Copyright 2006,2007 Martin Quinson, Malek Cherier           \r
+ * All right reserved. \r
+ *\r
+ * This program is free software; you can redistribute \r
+ * it and/or modify it under the terms of the license \r
+ *(GNU LGPL) which comes with this package. \r
+ *\r
+ */\r
\r
+ /* Simulation member functions implementation.\r
+  */  \r
+  \r
+\r
+#include <Application.hpp>\r
+#include <Environment.hpp>\r
+\r
+#include <Msg.hpp>\r
+\r
 #include <Simulation.hpp>\r
 \r
-#include <Simulator.hpp>\r
+\r
+#include <msg/msg.h> \r
 \r
 namespace SimGrid\r
 {\r
@@ -15,26 +37,72 @@ namespace SimGrid
                    }\r
                    \r
                         // initialize the MSG simulator. Must be done before anything else (even logging).\r
-               Simulator::init(argc, argv);\r
+               init(argc, argv);\r
                        \r
                        // the environment to load\r
-                       Environment environment(argv[1]);\r
+                       Environment env;\r
+                       \r
                        // the application to deploy\r
-                       Application application(argv[2]);\r
-                       // the simulation\r
-                       Simulation simulation;\r
+                       Application app;\r
+\r
                        \r
-                       // load the environment\r
-                       environment.load();\r
+                       // try to load the environment described by the xml file (argv[1])\r
+                       try\r
+                       {\r
+                               env.load(argv[1]);\r
+                       }\r
+                       catch(FileNotFoundException e)\r
+                       {\r
+                               info(e.toString());\r
+                               finalize();\r
+                               return 1;\r
+                       }\r
+                               \r
+                       // try to deploy the application described by the xml file deployment (argv[2])\r
+                       try\r
+                       {\r
+                               app.deploy(argv[2]);\r
+                       }\r
+                       catch(FileNotFoundException e)\r
+                       {\r
+                               info(e.toString());\r
+                               finalize();\r
+                               return 1;\r
+                       }\r
                        \r
-                       // deploy the application\r
-                       application.deploy();\r
+                       //try to run the simulation the given application on the given environment\r
+                       try\r
+                       {\r
+                               run();\r
+                       }\r
+                       catch(MsgException e)\r
+                       {\r
+                               info(e.toString());\r
+                               finalize();\r
+                               return 1;\r
+                       }\r
                        \r
-                       // run the simulation\r
-                       simulation.run(environment, application);\r
+                       // finalize the MSG simulator\r
+                       try\r
+                       {\r
+                               finalize();\r
+                       }\r
+                       catch(MsgException e)\r
+                       {\r
+                               info(e.toString());\r
+                               return 1;\r
+                       }\r
                        \r
-                       // finalize the simulator\r
-                       Simulator::finalize();\r
+                       return 0;\r
+               }\r
+               \r
+               void Simulation::run(void)\r
+               throw (MsgException)\r
+               {\r
+                       if(MSG_OK != MSG_main())\r
+                               throw MsgException("MSG_main() failed");\r
                }\r
        } // namespace Msg\r
 } // namespace SimGrid\r
+\r
+\r