X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4775ee0f232bccc4978dfbfb8153b7593be7dd77..1ec34be9aff33d4bb36758eb7a057b30c9d5539c:/src/surf/sg_platf.cpp diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index d0ef69e9f9..ad15673dde 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -354,9 +354,10 @@ void sg_platf_new_storage(StorageCreationArgs* storage) "Refusing to add a second storage named \"%s\"", storage->id.c_str()); simgrid::surf::StorageType* stype; - try { - stype = storage_types.at(storage->type_id); - } catch (std::out_of_range& unfound) { + auto st = storage_types.find(storage->type_id); + if (st != storage_types.end()) { + stype = st->second; + } else { xbt_die("No storage type '%s'", storage->type_id.c_str()); } @@ -426,6 +427,12 @@ void sg_platf_new_bypassRoute(sg_platf_route_cbarg_t bypassRoute) void sg_platf_new_process(sg_platf_process_cbarg_t process) { + std::map props; + if (process->properties) { + for (auto elm : *process->properties) + props.insert({elm.first, elm.second}); + delete process->properties; + } sg_host_t host = sg_host_by_name(process->host); if (not host) { // The requested host does not exist. Do a nice message to the user @@ -461,7 +468,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 = current_property_set; + arg->properties = &props; host->extension()->boot_processes.push_back(arg); @@ -473,7 +480,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 = current_property_set; + arg->properties = &props; 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]() { @@ -489,7 +496,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, - current_property_set, nullptr); + arg->properties, nullptr); /* The actor creation will fail if the host is currently dead, but that's fine */ if (actor != nullptr) { @@ -684,7 +691,7 @@ void sg_platf_new_hostlink(sg_platf_host_link_cbarg_t hostlink) auto as_cluster = static_cast(current_routing); if (as_cluster->privateLinks_.find(netpoint->id()) != as_cluster->privateLinks_.end()) - surf_parse_error("Host_link for '%s' is already defined!",hostlink->id); + surf_parse_error(std::string("Host_link for '") + hostlink->id + "' is already defined!"); XBT_DEBUG("Push Host_link for host '%s' to position %u", netpoint->cname(), netpoint->id()); as_cluster->privateLinks_.insert({netpoint->id(), {linkUp, linkDown}});