simgrid::s4u::Engine::instance()->netcardUnregister(netcard_);
}
-simgrid::s4u::Host* NetZoneImpl::createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount)
+simgrid::s4u::Host* NetZoneImpl::createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount,
+ std::unordered_map<std::string, std::string>* props)
{
simgrid::s4u::Host* res = new simgrid::s4u::Host(name);
surf_cpu_model_pm->createCpu(res, speedPerPstate, coreAmount);
+ if (props != nullptr)
+ for (auto kv : *props)
+ res->setProperty(kv.first.c_str(), kv.second.c_str());
+
+ simgrid::s4u::Host::onCreation(*res);
+
return res;
}
public:
/** @brief Make an host within that NetZone */
- simgrid::s4u::Host* createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount);
+ simgrid::s4u::Host* createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount,
+ std::unordered_map<std::string, std::string>* props);
/** @brief Creates a new route in this NetZone */
void addBypassRoute(sg_platf_route_cbarg_t e_route) override;
/** @brief Add an host to the current AS */
void sg_platf_new_host(sg_platf_host_cbarg_t args)
{
- simgrid::s4u::Host* host = routing_get_current()->createHost(args->id, &args->speed_per_pstate, args->core_amount);
-
- new simgrid::surf::HostImpl(host, mount_list);
- xbt_lib_set(storage_lib, args->id, ROUTING_STORAGE_HOST_LEVEL, static_cast<void*>(mount_list));
- mount_list = nullptr;
-
+ std::unordered_map<std::string, std::string> props;
if (args->properties) {
xbt_dict_cursor_t cursor=nullptr;
char *key,*data;
xbt_dict_foreach (args->properties, cursor, key, data)
- host->setProperty(key, data);
+ props[key] = data;
xbt_dict_free(&args->properties);
}
+ simgrid::s4u::Host* host =
+ routing_get_current()->createHost(args->id, &args->speed_per_pstate, args->core_amount, &props);
+
+ host->pimpl_->storage_ = mount_list;
+ xbt_lib_set(storage_lib, args->id, ROUTING_STORAGE_HOST_LEVEL, static_cast<void*>(mount_list));
+ mount_list = nullptr;
+
/* Change from the defaults */
if (args->state_trace)
host->pimpl_cpu->setStateTrace(args->state_trace);
if (args->coord && strcmp(args->coord, ""))
new simgrid::kernel::routing::vivaldi::Coords(host->pimpl_netcard, args->coord);
- simgrid::s4u::Host::onCreation(*host);
-
if (TRACE_is_enabled() && TRACE_needs_platform())
sg_instr_new_host(*host);
}
std::vector<double> speedPerPstate;
speedPerPstate.push_back(peer->speed);
- simgrid::s4u::Host* host = as->createHost(peer->id, &speedPerPstate, 1);
+ simgrid::s4u::Host* host = as->createHost(peer->id, &speedPerPstate, 1, nullptr);
as->setPeerLink(host->pimpl_netcard, peer->bw_in, peer->bw_out, peer->coord);
- simgrid::s4u::Host::onCreation(*host);
/* Change from the defaults */
if (peer->state_trace)