-/* 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. */
#endif
/** Finalize the default engine and all its dependencies */
- void shutdown();
+ XBT_ATTRIB_DEPRECATED_v335("Users are not supposed to shutdown the Engine") void shutdown();
/** Run the simulation until its end */
void run() const;
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);
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. */
/** 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); }
- /** Add a callback fired when the time jumps into the future */
+ /** Add a callback fired when the time jumps into the future.
+ *
+ * It is fired right after the time change (use get_clock() to get the new timestamp).
+ * The callback parameter is the time delta since previous timestamp. */
static void on_time_advance_cb(const std::function<void(double)>& cb) { on_time_advance.connect(cb); }
/** Add a callback fired when the time cannot advance because of inter-actors deadlock. Note that the on_exit of each
#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);