std::vector<xbt::Task<void()>> tasksTemp;
std::mutex mutex_;
+ static EngineImpl* instance_;
+
friend s4u::Engine;
public:
EngineImpl() = default;
+ /* Currently, only one instance is allowed to exist. This is why you can't copy or move it */
+#ifndef DOXYGEN
EngineImpl(const EngineImpl&) = delete;
EngineImpl& operator=(const EngineImpl&) = delete;
virtual ~EngineImpl();
+ static void shutdown();
+#endif
void load_deployment(const std::string& file) const;
void register_function(const std::string& name, const actor::ActorCodeFactory& code);
const std::vector<resource::Model*>& get_all_models() const { return models_; }
static EngineImpl* get_instance() { return simgrid::s4u::Engine::get_instance()->pimpl; }
+
actor::ActorCodeFactory get_function(const std::string& name)
{
auto res = registered_functions.find(name);
void add_actor_to_run_list_no_check(actor::ActorImpl* actor);
void add_actor_to_destroy_list(actor::ActorImpl& actor) { actors_to_destroy_.push_back(actor); }
- bool has_actors_to_run() { return not actors_to_run_.empty(); }
+ bool has_actors_to_run() const { return not actors_to_run_.empty(); }
const actor::ActorImpl* get_first_actor_to_run() const { return actors_to_run_.front(); }
const actor::ActorImpl* get_actor_to_run_at(unsigned long int i) const { return actors_to_run_[i]; }
unsigned long int get_actor_to_run_count() const { return actors_to_run_.size(); }