X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1847d1441271d076b3de449c8853031ea208ce8f..b8996c34869f8fbd6edf7556d7bef921e55962ba:/src/surf/sg_platf.cpp diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 219c19331e..234920087c 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -131,12 +131,11 @@ void sg_platf_new_link(LinkCreationArgs* link) } for (auto const& link_name : names) { simgrid::surf::LinkImpl* l = - surf_network_model->createLink(link_name.c_str(), link->bandwidth, link->latency, link->policy); + surf_network_model->createLink(link_name, link->bandwidth, link->latency, link->policy); if (link->properties) { for (auto const& elm : *link->properties) l->setProperty(elm.first, elm.second); - delete link->properties; } if (link->latency_trace) @@ -146,6 +145,7 @@ void sg_platf_new_link(LinkCreationArgs* link) if (link->state_trace) l->setStateTrace(link->state_trace); } + delete link->properties; } void sg_platf_new_cluster(ClusterCreationArgs* cluster) @@ -274,7 +274,7 @@ void sg_platf_new_cluster(ClusterCreationArgs* cluster) XBT_DEBUG("", cluster->router_id.c_str()); if (cluster->router_id.empty()) { std::string newid = std::string(cluster->prefix) + cluster->id + "_router" + cluster->suffix; - current_as->router_ = sg_platf_new_router(newid.c_str(), NULL); + current_as->router_ = sg_platf_new_router(newid, NULL); } else { current_as->router_ = sg_platf_new_router(cluster->router_id, NULL); } @@ -446,6 +446,7 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) std::vector args(process->argv, process->argv + process->argc); std::function code = factory(std::move(args)); + std::shared_ptr> properties(process->properties); smx_process_arg_t arg = nullptr; @@ -455,7 +456,7 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) arg->data = nullptr; arg->host = host; arg->kill_time = kill_time; - arg->properties = process->properties; + arg->properties = properties; host->extension()->boot_processes.push_back(arg); @@ -467,12 +468,12 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) arg->data = nullptr; arg->host = host; arg->kill_time = kill_time; - arg->properties = process->properties; + arg->properties = properties; XBT_DEBUG("Process %s@%s will be started at time %f", arg->name.c_str(), arg->host->getCname(), start_time); SIMIX_timer_set(start_time, [arg, auto_restart]() { smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), std::move(arg->code), arg->data, - arg->host, arg->properties, nullptr); + arg->host, arg->properties.get(), nullptr); if (arg->kill_time >= 0) simcall_process_set_kill_time(actor, arg->kill_time); if (auto_restart) @@ -483,7 +484,7 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) XBT_DEBUG("Starting Process %s(%s) right now", arg->name.c_str(), host->getCname()); smx_actor_t actor = simix_global->create_process_function(arg->name.c_str(), std::move(code), nullptr, host, - arg->properties, nullptr); + arg->properties.get(), nullptr); /* The actor creation will fail if the host is currently dead, but that's fine */ if (actor != nullptr) { @@ -493,7 +494,6 @@ void sg_platf_new_process(sg_platf_process_cbarg_t process) SIMIX_process_auto_restart_set(actor, auto_restart); } } - current_property_set = nullptr; } void sg_platf_new_peer(PeerCreationArgs* peer)