Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git] / src / mc / Session.hpp
index 9b7d857..7af4c43 100644 (file)
@@ -37,6 +37,7 @@ namespace mc {
 class Session {
 private:
   std::unique_ptr<ModelChecker> modelChecker_;
+  std::shared_ptr<simgrid::mc::Snapshot> initialSnapshot_;
 
 private:
   Session(pid_t pid, int socket);
@@ -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);
 
-  /** 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