From: Martin Quinson Date: Thu, 25 Mar 2021 00:59:00 +0000 (+0100) Subject: Use the models directly, not their names X-Git-Tag: v3.27~45 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/32dfd65da61704d4f0f7c5e5c91978489c046f33 Use the models directly, not their names --- diff --git a/include/simgrid/s4u/Engine.hpp b/include/simgrid/s4u/Engine.hpp index d24221ccae..25f87a0a99 100644 --- a/include/simgrid/s4u/Engine.hpp +++ b/include/simgrid/s4u/Engine.hpp @@ -136,7 +136,8 @@ public: * @param model Pointer to model * @param list List of dependencies for this model (optional) */ - void add_model(std::shared_ptr model, std::vector&& dep_models = {}); + void add_model(std::shared_ptr model, + std::vector&& dependencies = {}); /** @brief Get list of all models managed by this engine */ const std::vector& get_all_models() const; diff --git a/src/kernel/EngineImpl.cpp b/src/kernel/EngineImpl.cpp index 6dd06bc453..87e4ecc4f8 100644 --- a/src/kernel/EngineImpl.cpp +++ b/src/kernel/EngineImpl.cpp @@ -53,17 +53,17 @@ void EngineImpl::register_default(const actor::ActorCodeFactory& code) default_function = code; } -void EngineImpl::add_model(std::shared_ptr model, std::vector&& dep_models) +void EngineImpl::add_model(std::shared_ptr model, std::vector&& dependencies) { auto model_name = model->get_name(); xbt_assert(models_prio_.find(model_name) == models_prio_.end(), "Model %s already exists, use model.set_name() to change its name", model_name.c_str()); int order = -1; - for (const auto& dep_name : dep_models) { - xbt_assert(models_prio_.find(dep_name) != models_prio_.end(), - "Model %s doesn't exists. Impossible to use it as dependency.", dep_name.c_str()); - if (models_prio_[dep_name].prio > order) { - order = models_prio_[dep_name].prio; + for (const auto dep : dependencies) { + xbt_assert(models_prio_.find(dep->get_name()) != models_prio_.end(), + "Model %s doesn't exists. Impossible to use it as dependency.", dep->get_name().c_str()); + if (models_prio_[dep->get_name()].prio > order) { + order = models_prio_[dep->get_name()].prio; } } models_prio_[model_name] = {++order, std::move(model)}; diff --git a/src/kernel/EngineImpl.hpp b/src/kernel/EngineImpl.hpp index febaedfdec..04436a4a48 100644 --- a/src/kernel/EngineImpl.hpp +++ b/src/kernel/EngineImpl.hpp @@ -51,7 +51,8 @@ public: * @param model Pointer to model * @param list List of dependencies for this model */ - void add_model(std::shared_ptr model, std::vector&& dep_models = {}); + void add_model(std::shared_ptr model, + std::vector&& dep_models = {}); /** @brief Get list of all models managed by this engine */ const std::vector& get_all_models() const { return models_; } diff --git a/src/plugins/vm/VirtualMachineImpl.cpp b/src/plugins/vm/VirtualMachineImpl.cpp index 22ee6ca4b3..3ba0c8d363 100644 --- a/src/plugins/vm/VirtualMachineImpl.cpp +++ b/src/plugins/vm/VirtualMachineImpl.cpp @@ -22,7 +22,7 @@ void surf_vm_model_init_HL13(simgrid::kernel::resource::CpuModel* cpu_pm_model) auto vm_model = std::make_shared(); vm_model->set_name("VM_HL13"); - simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model->get_name()}); + simgrid::kernel::EngineImpl::get_instance()->add_model(vm_model, {cpu_pm_model}); std::shared_ptr cpu_model_vm; auto cpu_optim = simgrid::config::get_value("cpu/optim"); @@ -33,8 +33,7 @@ void surf_vm_model_init_HL13(simgrid::kernel::resource::CpuModel* cpu_pm_model) cpu_model_vm = std::make_shared(); cpu_model_vm->set_name("VmCpu_Cas01"); } - simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm, - {cpu_pm_model->get_name(), vm_model->get_name()}); + simgrid::kernel::EngineImpl::get_instance()->add_model(cpu_model_vm, {cpu_pm_model, vm_model.get()}); simgrid::s4u::Engine::get_instance()->get_netzone_root()->get_impl()->set_cpu_vm_model(cpu_model_vm); } diff --git a/src/s4u/s4u_Engine.cpp b/src/s4u/s4u_Engine.cpp index cc7fbe191a..4c07ea4152 100644 --- a/src/s4u/s4u_Engine.cpp +++ b/src/s4u/s4u_Engine.cpp @@ -73,10 +73,11 @@ double Engine::get_clock() return SIMIX_get_clock(); } -void Engine::add_model(std::shared_ptr model, std::vector&& dep_models) +void Engine::add_model(std::shared_ptr model, + std::vector&& dependencies) { - simgrid::kernel::actor::simcall([this, &model, &dep_models] { - pimpl->add_model(std::move(model), std::forward(dep_models)); + simgrid::kernel::actor::simcall([this, &model, &dependencies] { + pimpl->add_model(std::move(model), std::forward(dependencies)); }); }