Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix two minor bugs in the ODPOR implementation
[simgrid.git] / src / mc / api / RemoteApp.hpp
index 6f4b7009ef09e76f8d9b6a8884da32c9c76b7658..0773721333112d2e5d77781b3163c74ef2abc7d2 100644 (file)
@@ -26,11 +26,17 @@ namespace simgrid::mc {
  */
 class XBT_PUBLIC RemoteApp {
 private:
-  std::unique_ptr<CheckerSide> checker_side_;
+#if SIMGRID_HAVE_STATEFUL_MC
   PageStore page_store_{500};
   std::shared_ptr<simgrid::mc::Snapshot> initial_snapshot_;
+#else
+  void* initial_snapshot_ = nullptr; // The code tests it to decide whether to use the refork exec path
+#endif
+  std::unique_ptr<CheckerSide> checker_side_;
+  std::unique_ptr<CheckerSide> application_factory_; // when no meminfo, create checker_side_ by cloning this one
+  int master_socket_ = -1;
 
-  std::vector<char*> app_args_;
+  const std::vector<char*> app_args_;
 
   // No copy:
   RemoteApp(RemoteApp const&) = delete;
@@ -51,13 +57,11 @@ public:
   void restore_initial_state();
   void wait_for_requests();
 
-  /** Ask to the application to check for a deadlock. If so, do an error message and throw a DeadlockError. */
+  /** Ask to the application to check for a deadlock. If so, do an error message and throw a McError(DEADLOCK). */
   void check_deadlock() const;
 
   /** Ask the application to run post-mortem analysis, and maybe to stop ASAP */
   void finalize_app(bool terminate_asap = false);
-  /** Forcefully kill the application (after running post-mortem analysis)*/
-  void shutdown();
 
   /** Retrieve the max PID of the running actors */
   unsigned long get_maxpid() const;
@@ -68,10 +72,12 @@ public:
   /** Take a transition. A new Transition is created iff the last parameter is true */
   Transition* handle_simcall(aid_t aid, int times_considered, bool new_transition);
 
+#if SIMGRID_HAVE_STATEFUL_MC
   /* Get the memory of the remote process */
   RemoteProcessMemory* get_remote_process_memory() { return checker_side_->get_remote_memory(); }
 
   PageStore& get_page_store() { return page_store_; }
+#endif
 };
 } // namespace simgrid::mc