Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cut some more includes
[simgrid.git] / src / mc / Session.hpp
index f53d948..60317a7 100644 (file)
 #include <sys/prctl.h>
 #endif
 
-#include <sys/types.h>
+#include "xbt/sysdep.h"
 #include <sys/socket.h>
-#include <xbt/sysdep.h>
+#include <sys/types.h>
 #include <xbt/system_error.hpp>
 
 #include <functional>
 
-#include <xbt/log.h>
+#include "xbt/log.h"
 
 #include "src/mc/mc_forward.hpp"
 #include "src/mc/ModelChecker.hpp"
@@ -37,8 +37,9 @@ namespace mc {
 class Session {
 private:
   std::unique_ptr<ModelChecker> modelChecker_;
+  std::shared_ptr<simgrid::mc::Snapshot> initialSnapshot_;
 
-private: //
+private:
   Session(pid_t pid, int socket);
 
   // No copy:
@@ -49,19 +50,37 @@ public:
   ~Session();
   void close();
 
+public:
+  void initialize();
+  void execute(Transition const& transition);
+  void logState();
+
+  void restoreInitialState();
+
 public: // static constructors
 
   /** Create a new session by forking
+   *
+   *  This sets up the environment for the model-checked process
+   *  (environoment variables, sockets, etc.).
    *
    *  The code is expected to `exec` the model-checker program.
    */
-  static Session* fork(std::function<void(void)> code);
+  static Session* fork(std::function<void()> code);
 
-  /** Create a session using `execv` */
+  /** Spawn a model-checked process
+   *
+   *  @param path full path of the executable
+   *  @param argv arguments for the model-checked process (NULL-terminated)
+   */
   static Session* spawnv(const char *path, char *const argv[]);
 
-  /** Create a session using `execvp` */
-  static Session* spawnvp(const char *path, char *const argv[]);
+  /** Spawn a model-checked process (using PATH)
+   *
+   *  @param file file name of the executable (found using `PATH`)
+   *  @param argv arguments for the model-checked process (NULL-terminated)
+   */
+  static Session* spawnvp(const char *file, char *const argv[]);
 };
 
 // Temporary