+/*\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
}\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