Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
more refactoring of get_instance calls
[simgrid.git] / src / kernel / routing / NetZoneImpl.cpp
index d357d6a..bfcf4ce 100644 (file)
@@ -72,12 +72,13 @@ xbt::signal<void(bool symmetrical, kernel::routing::NetPoint* src, kernel::routi
 
 NetZoneImpl::NetZoneImpl(const std::string& name) : piface_(this), name_(name)
 {
+  auto* engine = s4u::Engine::get_instance();
   /* workaroud: first netzoneImpl will be the root netzone.
    * Without globals and with current surf_*_model_description init functions, we need
    * the root netzone to exist when creating the models.
    * This was usually done at sg_platf.cpp, during XML parsing */
-  if (not s4u::Engine::get_instance()->get_netzone_root()) {
-    s4u::Engine::get_instance()->set_netzone_root(&piface_);
+  if (not engine->get_netzone_root()) {
+    engine->set_netzone_root(&piface_);
     /* root netzone set, initialize models */
     simgrid::s4u::Engine::on_platform_creation();
 
@@ -91,10 +92,10 @@ NetZoneImpl::NetZoneImpl(const std::string& name) : piface_(this), name_(name)
     surf_config_models_setup();
   }
 
-  xbt_assert(nullptr == s4u::Engine::get_instance()->netpoint_by_name_or_null(get_name()),
+  xbt_assert(nullptr == engine->netpoint_by_name_or_null(get_name()),
              "Refusing to create a second NetZone called '%s'.", get_cname());
   netpoint_ = new NetPoint(name_, NetPoint::Type::NetZone);
-  XBT_DEBUG("NetZone '%s' created with the id '%u'", get_cname(), netpoint_->id());
+  XBT_DEBUG("NetZone '%s' created with the id '%lu'", get_cname(), netpoint_->id());
   _sg_cfg_init_status = 2; /* HACK: direct access to the global controlling the level of configuration to prevent
                             * any further config now that we created some real content */
   simgrid::s4u::NetZone::on_creation(piface_); // notify the signal
@@ -114,7 +115,7 @@ NetZoneImpl::~NetZoneImpl()
 void NetZoneImpl::add_child(NetZoneImpl* new_zone)
 {
   xbt_assert(not sealed_, "Cannot add a new child to the sealed zone %s", get_cname());
-  /* set the father behavior */
+  /* set the parent behavior */
   hierarchy_ = RoutingMode::recursive;
   children_.push_back(new_zone);
 }
@@ -195,7 +196,8 @@ NetPoint* NetZoneImpl::create_router(const std::string& name)
 
   return (new NetPoint(name, NetPoint::Type::Router))->set_englobing_zone(this);
 }
-int NetZoneImpl::add_component(NetPoint* elm)
+
+unsigned long NetZoneImpl::add_component(NetPoint* elm)
 {
   vertices_.push_back(elm);
   return vertices_.size() - 1; // The rank of the newly created object
@@ -207,31 +209,31 @@ std::vector<resource::LinkImpl*> NetZoneImpl::get_link_list_impl(const std::vect
   std::vector<resource::LinkImpl*> links;
 
   for (const auto& link : link_list) {
+    if (link.get_link()->get_sharing_policy() != s4u::Link::SharingPolicy::SPLITDUPLEX) {
+      links.push_back(link.get_link()->get_impl());
+      continue;
+    }
+    // split-duplex links
+    const auto* sd_link = dynamic_cast<const s4u::SplitDuplexLink*>(link.get_link());
+    xbt_assert(sd_link,
+               "Add_route: cast to SpliDuplexLink impossible. This should not happen, please contact SimGrid team");
     resource::LinkImpl* link_impl;
-    if (link.get_link()->get_sharing_policy() == s4u::Link::SharingPolicy::SPLITDUPLEX) {
-      const auto* sd_link = dynamic_cast<const s4u::SplitDuplexLink*>(link.get_link());
-      xbt_assert(sd_link,
-                 "Add_route: cast to SpliDuplexLink impossible. This should not happen, please contact SimGrid team");
-      switch (link.get_direction()) {
-        case s4u::LinkInRoute::Direction::UP:
-          if (backroute)
-            link_impl = sd_link->get_link_down()->get_impl();
-          else
-            link_impl = sd_link->get_link_up()->get_impl();
-          break;
-        case s4u::LinkInRoute::Direction::DOWN:
-          if (backroute)
-            link_impl = sd_link->get_link_up()->get_impl();
-          else
-            link_impl = sd_link->get_link_down()->get_impl();
-          break;
-        case s4u::LinkInRoute::Direction::NONE:
-        default:
-          throw std::invalid_argument("Invalid add_route. Split-Duplex link without a direction: " +
-                                      link.get_link()->get_name());
-      }
-    } else {
-      link_impl = link.get_link()->get_impl();
+    switch (link.get_direction()) {
+      case s4u::LinkInRoute::Direction::UP:
+        if (backroute)
+          link_impl = sd_link->get_link_down()->get_impl();
+        else
+          link_impl = sd_link->get_link_up()->get_impl();
+        break;
+      case s4u::LinkInRoute::Direction::DOWN:
+        if (backroute)
+          link_impl = sd_link->get_link_up()->get_impl();
+        else
+          link_impl = sd_link->get_link_down()->get_impl();
+        break;
+      default:
+        throw std::invalid_argument("Invalid add_route. Split-Duplex link without a direction: " +
+                                    link.get_link()->get_name());
     }
     links.push_back(link_impl);
   }
@@ -358,27 +360,27 @@ static void find_common_ancestors(const NetPoint* src, const NetPoint* dst,
     current = current->get_parent();
   }
 
-  /* (3) find the common father.
+  /* (3) find the common parent.
    * Before that, index_src and index_dst may be different, they both point to nullptr in path_src/path_dst
    * So we move them down simultaneously as long as they point to the same content.
    *
    * This works because all SimGrid platform have a unique root element (that is the last element of both paths).
    */
-  NetZoneImpl* father = nullptr; // the netzone we dropped on the previous loop iteration
+  NetZoneImpl* parent = nullptr; // the netzone we dropped on the previous loop iteration
   while (path_src.size() > 1 && path_dst.size() > 1 && path_src.back() == path_dst.back()) {
-    father = path_src.back();
+    parent = path_src.back();
     path_src.pop_back();
     path_dst.pop_back();
   }
 
   /* (4) we found the difference at least. Finalize the returned values */
-  *src_ancestor = path_src.back();                  /* the first different father of src */
-  *dst_ancestor = path_dst.back();                  /* the first different father of dst */
+  *src_ancestor = path_src.back();                  /* the first different parent of src */
+  *dst_ancestor = path_dst.back();                  /* the first different parent of dst */
   if (*src_ancestor == *dst_ancestor) {             // src is the ancestor of dst, or the contrary
     *common_ancestor = *src_ancestor;
   } else {
-    xbt_assert(father != nullptr);
-    *common_ancestor = father;
+    xbt_assert(parent != nullptr);
+    *common_ancestor = parent;
   }
 }
 
@@ -420,7 +422,7 @@ bool NetZoneImpl::get_bypass_route(const NetPoint* src, const NetPoint* dst,
     current = current->parent_;
   }
 
-  /* (2) find the common father */
+  /* (2) find the common parent */
   while (path_src.size() > 1 && path_dst.size() > 1 && path_src.back() == path_dst.back()) {
     path_src.pop_back();
     path_dst.pop_back();
@@ -487,8 +489,8 @@ void NetZoneImpl::get_global_route_with_netzones(const NetPoint* src, const NetP
   NetZoneImpl* src_ancestor;
   NetZoneImpl* dst_ancestor;
   find_common_ancestors(src, dst, &common_ancestor, &src_ancestor, &dst_ancestor);
-  XBT_DEBUG("elements_father: common ancestor '%s' src ancestor '%s' dst ancestor '%s'", common_ancestor->get_cname(),
-            src_ancestor->get_cname(), dst_ancestor->get_cname());
+  XBT_DEBUG("find_common_ancestors: common ancestor '%s' src ancestor '%s' dst ancestor '%s'",
+            common_ancestor->get_cname(), src_ancestor->get_cname(), dst_ancestor->get_cname());
 
   netzones.insert(src->get_englobing_zone());
   netzones.insert(dst->get_englobing_zone());