Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use std::any_of(...).
[simgrid.git] / src / mc / api / RemoteApp.hpp
index 0c9c00d..dbb5e5d 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;
@@ -46,12 +52,10 @@ public:
    */
   explicit RemoteApp(const std::vector<char*>& args, bool need_memory_introspection);
 
-  ~RemoteApp();
-
   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 */
@@ -66,10 +70,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