Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Few more auto's.
[simgrid.git] / src / kernel / routing / NetZoneImpl.cpp
index ed7e84b12c48f0720c15b1ec4774d537dc840e96..bd7ec012832428b33dba48cecfbb5fe35716a945 100644 (file)
@@ -65,8 +65,27 @@ int NetZoneImpl::get_host_count() const
   return count;
 }
 
+s4u::Link* NetZoneImpl::create_link(const std::string& name, const std::vector<double>& bandwidths, double latency,
+                                    s4u::Link::SharingPolicy policy,
+                                    const std::unordered_map<std::string, std::string>* 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<double>& speed_per_pstate,
-                                    int coreAmount, const std::map<std::string, std::string>* props)
+                                    int coreAmount, const std::unordered_map<std::string, std::string>* props)
 {
   auto* res = new s4u::Host(name);
 
@@ -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 */