* @param type Model type (network, disk, etc)
* @param model Pointer to model
*/
- void add_model(simgrid::kernel::resource::Model::Type type, std::unique_ptr<simgrid::kernel::resource::Model> model);
+ void add_model(simgrid::kernel::resource::Model::Type type, std::shared_ptr<simgrid::kernel::resource::Model> model);
/** @brief Retrieves all netzones of the type indicated by the template argument */
template <class T> std::vector<T*> get_filtered_netzones() const
models_by_type_[type].push_back(model);
}
-void EngineImpl::add_model(resource::Model::Type type, std::unique_ptr<resource::Model> model, bool is_default)
+void EngineImpl::add_model(resource::Model::Type type, std::shared_ptr<resource::Model> model, bool is_default)
{
add_model_ptask(type, model.get(), is_default);
models_.push_back(std::move(model));
std::unordered_map<std::string, routing::NetPoint*> netpoints_;
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::vector<std::unique_ptr<resource::Model>> models_;
+ std::vector<std::shared_ptr<resource::Model>> models_;
std::unordered_map<resource::Model::Type, std::vector<resource::Model*>> models_by_type_;
friend s4u::Engine;
* @param model Pointer to model
* @param is_default Is this the default model for this type of resource in this exp
*/
- void add_model(resource::Model::Type type, std::unique_ptr<resource::Model> model, bool is_default = false);
+ void add_model(resource::Model::Type type, std::shared_ptr<resource::Model> model, bool is_default = false);
/**
* @brief Add a model (specific for ptask)
*
/** @brief Get list of models created for a resource type */
const std::vector<resource::Model*>& get_model_list(resource::Model::Type type) { return models_by_type_[type]; }
/** @brief Get list of all models managed by this engine */
- const std::vector<std::unique_ptr<resource::Model>>& get_all_models() { return models_; }
+ const std::vector<std::shared_ptr<resource::Model>>& get_all_models() { return models_; }
routing::NetZoneImpl* netzone_root_ = nullptr;
static EngineImpl* get_instance() { return simgrid::s4u::Engine::get_instance()->pimpl; }
void surf_vm_model_init_HL13()
{
- auto vm_model = std::make_unique<simgrid::vm::VMModel>();
+ auto vm_model = std::make_shared<simgrid::vm::VMModel>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::VM,
std::move(vm_model), true);
}
}
void Engine::add_model(simgrid::kernel::resource::Model::Type type,
- std::unique_ptr<simgrid::kernel::resource::Model> model)
+ std::shared_ptr<simgrid::kernel::resource::Model> model)
{
simgrid::kernel::actor::simcall([this, type, &model] { pimpl->add_model(type, std::move(model)); });
}
else
algo = simgrid::kernel::resource::Model::UpdateAlgo::FULL;
- auto cpu_model_pm = std::make_unique<simgrid::kernel::resource::CpuCas01Model>(algo);
+ auto cpu_model_pm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>(algo);
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::CPU_PM,
std::move(cpu_model_pm), true);
- auto cpu_model_vm = std::make_unique<simgrid::kernel::resource::CpuCas01Model>(algo);
+ auto cpu_model_vm = std::make_shared<simgrid::kernel::resource::CpuCas01Model>(algo);
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::CPU_VM,
std::move(cpu_model_vm), true);
}
void CpuTiModel::create_pm_vm_models()
{
- auto cpu_model_pm = std::make_unique<CpuTiModel>();
+ auto cpu_model_pm = std::make_shared<CpuTiModel>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::CPU_PM,
std::move(cpu_model_pm), true);
- auto cpu_model_vm = std::make_unique<CpuTiModel>();
+ auto cpu_model_vm = std::make_shared<CpuTiModel>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::CPU_VM,
std::move(cpu_model_vm), true);
}
void surf_disk_model_init_default()
{
- auto disk_model = std::make_unique<simgrid::kernel::resource::DiskS19Model>();
+ auto disk_model = std::make_shared<simgrid::kernel::resource::DiskS19Model>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::DISK,
std::move(disk_model), true);
}
void surf_host_model_init_current_default()
{
- auto host_model = std::make_unique<simgrid::surf::HostCLM03Model>();
+ auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>();
simgrid::config::set_default<bool>("network/crosstraffic", true);
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::HOST,
std::move(host_model), true);
void surf_host_model_init_compound()
{
- auto host_model = std::make_unique<simgrid::surf::HostCLM03Model>();
+ auto host_model = std::make_shared<simgrid::surf::HostCLM03Model>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::HOST,
std::move(host_model), true);
}
/* } */
void surf_network_model_init_LegrandVelho()
{
- auto net_model = std::make_unique<simgrid::kernel::resource::NetworkCm02Model>();
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::NETWORK,
std::move(net_model), true);
simgrid::config::set_default<double>("network/bandwidth-factor", 1.0);
simgrid::config::set_default<double>("network/weight-S", 0.0);
- auto net_model = std::make_unique<simgrid::kernel::resource::NetworkCm02Model>();
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkCm02Model>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::NETWORK,
std::move(net_model), true);
}
*********/
void surf_network_model_init_Constant()
{
- auto net_model = std::make_unique<simgrid::kernel::resource::NetworkConstantModel>();
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkConstantModel>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::NETWORK,
std::move(net_model), true);
}
/* } */
void surf_network_model_init_IB()
{
- auto net_model = std::make_unique<simgrid::kernel::resource::NetworkIBModel>();
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkIBModel>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::NETWORK,
std::move(net_model), true);
*********/
void surf_network_model_init_NS3()
{
- auto net_model = std::make_unique<simgrid::kernel::resource::NetworkNS3Model>();
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkNS3Model>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::NETWORK,
std::move(net_model), true);
}
/* } */
void surf_network_model_init_SMPI()
{
- auto net_model = std::make_unique<simgrid::kernel::resource::NetworkSmpiModel>();
+ auto net_model = std::make_shared<simgrid::kernel::resource::NetworkSmpiModel>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::NETWORK,
std::move(net_model), true);
{
XBT_CINFO(xbt_cfg, "Switching to the L07 model to handle parallel tasks.");
- auto host_model = std::make_unique<simgrid::surf::HostL07Model>();
+ auto host_model = std::make_shared<simgrid::surf::HostL07Model>();
simgrid::kernel::EngineImpl::get_instance()->add_model(simgrid::kernel::resource::Model::Type::HOST,
std::move(host_model), true);
}