Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines for 2023.
[simgrid.git] / include / simgrid / s4u / Engine.hpp
index 3e620e4..f2a3203 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006-2022. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2006-2023. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -105,10 +105,6 @@ protected:
   friend kernel::routing::NetZoneImpl;
   friend kernel::resource::HostImpl;
   friend kernel::resource::StandardLinkImpl;
-  void host_register(const std::string& name, Host* host);
-  void host_unregister(const std::string& name);
-  void link_register(const std::string& name, const Link* link);
-  void link_unregister(const std::string& name);
   void netpoint_register(simgrid::kernel::routing::NetPoint* card);
   void netpoint_unregister(simgrid::kernel::routing::NetPoint* card);
   void set_netzone_root(const NetZone* netzone);
@@ -200,7 +196,8 @@ public:
   static void set_config(const std::string& name, double value);
   static void set_config(const std::string& name, const std::string& value);
 
-  Engine* set_default_comm_data_copy_callback(void (*callback)(kernel::activity::CommImpl*, void*, size_t));
+  Engine*
+  set_default_comm_data_copy_callback(const std::function<void(kernel::activity::CommImpl*, void*, size_t)>& callback);
 
   /** Add a callback fired when the platform is created (ie, the xml file parsed),
    * right before the actual simulation starts. */
@@ -208,6 +205,8 @@ public:
   /** Add a callback fired when the platform is about to be created
    * (ie, after any configuration change and just before the resource creation) */
   static void on_platform_creation_cb(const std::function<void()>& cb) { on_platform_creation.connect(cb); }
+  /** Add a callback fired when the main simulation loop starts, at the beginning of the first call to Engine::run() */
+  static void on_simulation_start_cb(const std::function<void()>& cb) { on_simulation_start.connect(cb); }
   /** Add a callback fired when the main simulation loop ends, just before the end of Engine::run() */
   static void on_simulation_end_cb(const std::function<void()>& cb) { on_simulation_end.connect(cb); }
 
@@ -228,9 +227,11 @@ public:
 #endif
 
 private:
-  static xbt::signal<void()> on_simulation_end;
+  static xbt::signal<void()> on_simulation_start;
   static xbt::signal<void(double)> on_time_advance;
   static xbt::signal<void(void)> on_deadlock;
+  static xbt::signal<void()> on_simulation_end;
+
   kernel::EngineImpl* const pimpl;
   static Engine* instance_;
   void initialize(int* argc, char** argv);