#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
friend s4u::Engine;
std::vector<std::string> cmdline_; // Copy of the argv we got (including argv[0])
+
public:
EngineImpl() = default;
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