Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
netcards were renamed to netpoints recently
[simgrid.git] / src / kernel / routing / VivaldiZone.cpp
index df98547..7832bed 100644 (file)
@@ -5,9 +5,10 @@
 
 #include <boost/algorithm/string.hpp>
 
-#include <simgrid/s4u/host.hpp>
+#include "simgrid/s4u/engine.hpp"
+#include "simgrid/s4u/host.hpp"
 
-#include "src/kernel/routing/NetCard.hpp"
+#include "src/kernel/routing/NetPoint.hpp"
 #include "src/kernel/routing/VivaldiZone.hpp"
 #include "src/surf/network_interface.hpp"
 
@@ -17,12 +18,12 @@ namespace simgrid {
 namespace kernel {
 namespace routing {
 namespace vivaldi {
-simgrid::xbt::Extension<NetCard, Coords> Coords::EXTENSION_ID;
+simgrid::xbt::Extension<NetPoint, Coords> Coords::EXTENSION_ID;
 
-Coords::Coords(NetCard* netcard, const char* coordStr)
+Coords::Coords(NetPoint* netcard, const char* coordStr)
 {
   if (!Coords::EXTENSION_ID.valid())
-    Coords::EXTENSION_ID = NetCard::extension_create<Coords>();
+    Coords::EXTENSION_ID = NetPoint::extension_create<Coords>();
 
   std::vector<std::string> string_values;
   boost::split(string_values, coordStr, boost::is_any_of(" "));
@@ -46,44 +47,39 @@ static inline double euclidean_dist_comp(int index, std::vector<double>* src, st
   return (src_coord - dst_coord) * (src_coord - dst_coord);
 }
 
-static std::vector<double>* getCoordsFromNetcard(NetCard* nc)
+static std::vector<double>* getCoordsFromNetcard(NetPoint* nc)
 {
   simgrid::kernel::routing::vivaldi::Coords* coords = nc->extension<simgrid::kernel::routing::vivaldi::Coords>();
   xbt_assert(coords, "Please specify the Vivaldi coordinates of %s %s (%p)",
-             (nc->isAS() ? "AS" : (nc->isHost() ? "Host" : "Router")), nc->cname(), nc);
+             (nc->isNetZone() ? "Netzone" : (nc->isHost() ? "Host" : "Router")), nc->cname(), nc);
   return &coords->coords;
 }
-AsVivaldi::AsVivaldi(As* father, const char* name) : AsCluster(father, name)
+VivaldiZone::VivaldiZone(NetZone* father, const char* name) : ClusterZone(father, name)
 {
 }
 
-void AsVivaldi::setPeerLink(NetCard* netcard, double bw_in, double bw_out, double latency, const char* coord)
+void VivaldiZone::setPeerLink(NetPoint* netcard, double bw_in, double bw_out, const char* coord)
 {
-  xbt_assert(netcard->containingAS() == this, "Cannot add a peer link to a netcard that is not in this AS");
+  xbt_assert(netcard->netzone() == this, "Cannot add a peer link to a netcard that is not in this netzone");
 
   new simgrid::kernel::routing::vivaldi::Coords(netcard, coord);
 
-  char* link_up   = bprintf("link_%s_UP", netcard->cname());
-  char* link_down = bprintf("link_%s_DOWN", netcard->cname());
-  Link* linkUp    = surf_network_model->createLink(link_up, bw_out, latency, SURF_LINK_SHARED);
-  Link* linkDown  = surf_network_model->createLink(link_down, bw_in, latency, SURF_LINK_SHARED);
+  std::string link_up   = "link_" + netcard->name() + "_UP";
+  std::string link_down = "link_" + netcard->name() + "_DOWN";
+  Link* linkUp          = surf_network_model->createLink(link_up.c_str(), bw_out, 0, SURF_LINK_SHARED);
+  Link* linkDown        = surf_network_model->createLink(link_down.c_str(), bw_in, 0, SURF_LINK_SHARED);
   privateLinks_.insert({netcard->id(), {linkUp, linkDown}});
-
-  free(link_up);
-  free(link_down);
 }
 
-void AsVivaldi::getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t route, double* lat)
+void VivaldiZone::getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t route, double* lat)
 {
   XBT_DEBUG("vivaldi getLocalRoute from '%s'[%d] '%s'[%d]", src->cname(), src->id(), dst->cname(), dst->id());
 
-  if (src->isAS()) {
-    char* srcName = bprintf("router_%s", src->cname());
-    char* dstName = bprintf("router_%s", dst->cname());
-    route->gw_src = (sg_netcard_t)xbt_lib_get_or_null(as_router_lib, srcName, ROUTING_ASR_LEVEL);
-    route->gw_dst = (sg_netcard_t)xbt_lib_get_or_null(as_router_lib, dstName, ROUTING_ASR_LEVEL);
-    xbt_free(srcName);
-    xbt_free(dstName);
+  if (src->isNetZone()) {
+    std::string srcName = "router_" + src->name();
+    std::string dstName = "router_" + dst->name();
+    route->gw_src       = simgrid::s4u::Engine::instance()->netpointByNameOrNull(srcName.c_str());
+    route->gw_dst       = simgrid::s4u::Engine::instance()->netpointByNameOrNull(dstName.c_str());
   }
 
   /* Retrieve the private links */