X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9104957deccc59e0e804215d5db498fabfd40d29..c37760c9fc6ee35af3b7fec7490aebc3fab8fd87:/src/kernel/routing/NetZoneImpl.cpp diff --git a/src/kernel/routing/NetZoneImpl.cpp b/src/kernel/routing/NetZoneImpl.cpp index 5085d81410..bd7ec01283 100644 --- a/src/kernel/routing/NetZoneImpl.cpp +++ b/src/kernel/routing/NetZoneImpl.cpp @@ -24,7 +24,7 @@ NetZoneImpl::NetZoneImpl(NetZoneImpl* father, const std::string& name, resource: xbt_assert(nullptr == s4u::Engine::get_instance()->netpoint_by_name_or_null(get_name()), "Refusing to create a second NetZone called '%s'.", get_cname()); - netpoint_ = new NetPoint(name_, NetPoint::Type::NetZone, father); + netpoint_ = new NetPoint(name_, NetPoint::Type::NetZone, father_); XBT_DEBUG("NetZone '%s' created with the id '%u'", get_cname(), netpoint_->id()); } @@ -65,10 +65,29 @@ int NetZoneImpl::get_host_count() const return count; } +s4u::Link* NetZoneImpl::create_link(const std::string& name, const std::vector& bandwidths, double latency, + s4u::Link::SharingPolicy policy, + const std::unordered_map* props) +{ + static double last_warned_latency = sg_surf_precision; + if (latency != 0.0 && latency < last_warned_latency) { + XBT_WARN("Latency for link %s is smaller than surf/precision (%g < %g)." + " For more accuracy, consider setting \"--cfg=surf/precision:%g\".", + name.c_str(), latency, sg_surf_precision, latency); + last_warned_latency = latency; + } + + auto* l = surf_network_model->create_link(name, bandwidths, latency, policy); + + if (props) + l->set_properties(*props); + + return l->get_iface(); +} s4u::Host* NetZoneImpl::create_host(const std::string& name, const std::vector& speed_per_pstate, - int coreAmount, const std::map* props) + int coreAmount, const std::unordered_map* props) { - s4u::Host* res = new s4u::Host(name); + auto* res = new s4u::Host(name); if (hierarchy_ == RoutingMode::unset) hierarchy_ = RoutingMode::base; @@ -118,7 +137,7 @@ void NetZoneImpl::add_bypass_route(NetPoint* src, NetPoint* dst, NetPoint* gw_sr } /* Build a copy that will be stored in the dict */ - BypassRoute* newRoute = new BypassRoute(gw_src, gw_dst); + auto* newRoute = new BypassRoute(gw_src, gw_dst); for (auto const& link : link_list) newRoute->links.push_back(link); @@ -202,13 +221,13 @@ static void find_common_ancestors(NetPoint* src, NetPoint* dst, NetZoneImpl* current = src->get_englobing_zone(); while (current != nullptr) { path_src.push_back(current); - current = static_cast(current->get_father()); + current = current->get_father(); } std::vector path_dst; current = dst->get_englobing_zone(); while (current != nullptr) { path_dst.push_back(current); - current = static_cast(current->get_father()); + current = current->get_father(); } /* (3) find the common father. @@ -265,14 +284,14 @@ bool NetZoneImpl::get_bypass_route(NetPoint* src, NetPoint* dst, std::vector path_src; NetZoneImpl* current = src->get_englobing_zone(); while (current != nullptr) { - path_src.push_back(static_cast(current)); + path_src.push_back(current); current = current->father_; } std::vector path_dst; current = dst->get_englobing_zone(); while (current != nullptr) { - path_dst.push_back(static_cast(current)); + path_dst.push_back(current); current = current->father_; } @@ -374,7 +393,7 @@ void NetZoneImpl::get_global_route(NetPoint* src, NetPoint* dst, /* Not in the same netzone, no bypass. We'll have to find our path between the netzones recursively */ common_ancestor->get_local_route(src_ancestor->netpoint_, dst_ancestor->netpoint_, &route, latency); - xbt_assert((route.gw_src != nullptr) && (route.gw_dst != nullptr), "bad gateways for route from \"%s\" to \"%s\"", + xbt_assert((route.gw_src != nullptr) && (route.gw_dst != nullptr), "Bad gateways for route from '%s' to '%s'.", src->get_cname(), dst->get_cname()); /* If source gateway is not our source, we have to recursively find our way up to this point */