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);
}
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);
}
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;
}
}
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();
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());