-/* Copyright (c) 2016-2022. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2016-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. */
#include "src/kernel/activity/ExecImpl.hpp"
#include "src/kernel/activity/IoImpl.hpp"
#include "src/kernel/activity/MailboxImpl.hpp"
+#include "src/kernel/activity/MessageQueueImpl.hpp"
#include "src/kernel/activity/SleepImpl.hpp"
#include "src/kernel/activity/Synchro.hpp"
#include "src/kernel/actor/ActorImpl.hpp"
-#include "src/kernel/resource/SplitDuplexLinkImpl.hpp"
#include <boost/intrusive/list.hpp>
#include <map>
class EngineImpl {
std::unordered_map<std::string, routing::NetPoint*> netpoints_;
std::unordered_map<std::string, activity::MailboxImpl*> mailboxes_;
+ std::unordered_map<std::string, activity::MessageQueueImpl*> mqueues_;
std::unordered_map<std::string, actor::ActorCodeFactory> registered_functions; // Maps function names to actor code
actor::ActorCodeFactory default_function; // Function to use as a fallback when the provided name matches nothing
std::unique_ptr<void, std::function<int(void*)>> platf_handle_; //!< handle for platform library
friend s4u::Engine;
+ std::vector<std::string> cmdline_; // Copy of the argv we got (including argv[0])
+
public:
EngineImpl() = default;
#endif
void initialize(int* argc, char** argv);
+ const std::vector<std::string>& get_cmdline() const
+ {
+ return cmdline_;
+ }
void load_platform(const std::string& platf);
void load_deployment(const std::string& file) const;
void seal_platform() const;
const std::vector<resource::Model*>& get_all_models() const { return models_; }
static bool has_instance() { return s4u::Engine::has_instance(); }
- static EngineImpl* get_instance() { return s4u::Engine::get_instance()->pimpl; }
- static EngineImpl* get_instance(int* argc, char** argv) { return s4u::Engine::get_instance(argc, argv)->pimpl; }
+ static EngineImpl* get_instance()
+ {
+ return s4u::Engine::get_instance()->pimpl_;
+ }
+ static EngineImpl* get_instance(int* argc, char** argv)
+ {
+ return s4u::Engine::get_instance(argc, argv)->pimpl_;
+ }
actor::ActorCodeFactory get_function(const std::string& name)
{
void display_all_actor_status() const;
void run_all_actors();
- /* @brief Finish simulation initialization
- * This function must be called before the first call to solve()
- */
- void presolve() const;
/** @brief Performs a part of the simulation
* @param max_date Maximum date to update the simulation to, or -1
* @return the elapsed time, or -1.0 if no event could be executed