XBT_ATTRIB_DEPRECATED_v330("Please change the return code of your actors to void") void register_default(
int (*code)(int, char**));
void register_default(void (*code)(int, char**));
- void register_default(kernel::actor::ActorCodeFactory factory);
+ void register_default(const kernel::actor::ActorCodeFactory& factory);
- void register_function(const std::string& name, kernel::actor::ActorCodeFactory factory);
+ void register_function(const std::string& name, const kernel::actor::ActorCodeFactory& factory);
template <class F> void register_actor(const std::string& name)
{
register_function(name, [](std::vector<std::string> args) {
surf_parse_close();
}
-void EngineImpl::register_function(const std::string& name, actor::ActorCodeFactory code)
+void EngineImpl::register_function(const std::string& name, const actor::ActorCodeFactory& code)
{
registered_functions[name] = code;
}
-void EngineImpl::register_default(actor::ActorCodeFactory code)
+void EngineImpl::register_default(const actor::ActorCodeFactory& code)
{
default_function = code;
}
virtual ~EngineImpl();
void load_deployment(const std::string& file);
- void register_function(const std::string& name, actor::ActorCodeFactory code);
- void register_default(actor::ActorCodeFactory code);
+ void register_function(const std::string& name, const actor::ActorCodeFactory& code);
+ void register_default(const actor::ActorCodeFactory& code);
routing::NetZoneImpl* netzone_root_ = nullptr;
static EngineImpl* get_instance() { return simgrid::s4u::Engine::get_instance()->pimpl; }
{
register_default([code](std::vector<std::string> args) { return xbt::wrap_main(code, std::move(args)); });
}
-void Engine::register_default(kernel::actor::ActorCodeFactory code)
+void Engine::register_default(const kernel::actor::ActorCodeFactory& code)
{
- simgrid::kernel::actor::simcall([this, code]() { pimpl->register_default(code); });
+ simgrid::kernel::actor::simcall([this, &code]() { pimpl->register_default(code); });
}
-void Engine::register_function(const std::string& name, kernel::actor::ActorCodeFactory code)
+void Engine::register_function(const std::string& name, const kernel::actor::ActorCodeFactory& code)
{
- simgrid::kernel::actor::simcall([this, name, code]() { pimpl->register_function(name, code); });
+ simgrid::kernel::actor::simcall([this, name, &code]() { pimpl->register_function(name, code); });
}
/** Load a deployment file and launch the actors that it contains