X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/369ab5c3a73cf86420a0c0ad65794fb0c614d137..371d168e21b83e2364c2ac2dbff3847588769c2b:/src/kernel/routing/ClusterZone.cpp diff --git a/src/kernel/routing/ClusterZone.cpp b/src/kernel/routing/ClusterZone.cpp index 5b3027866b..72f6dca848 100644 --- a/src/kernel/routing/ClusterZone.cpp +++ b/src/kernel/routing/ClusterZone.cpp @@ -1,21 +1,18 @@ -/* Copyright (c) 2009-2021. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ #include "simgrid/kernel/routing/ClusterZone.hpp" #include "simgrid/kernel/routing/NetPoint.hpp" -#include "simgrid/kernel/routing/RoutedZone.hpp" -#include "src/surf/network_interface.hpp" +#include "src/kernel/resource/StandardLinkImpl.hpp" -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_cluster, surf, "Routing part of surf"); +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ker_routing_cluster, ker_platform, "Kernel Cluster Routing"); /* This routing is specifically setup to represent clusters, aka homogeneous sets of machines * Note that a router is created, easing the interconnection with the rest of the world. */ -namespace simgrid { -namespace kernel { -namespace routing { +namespace simgrid::kernel::routing { void ClusterBase::set_loopback() { @@ -40,29 +37,26 @@ void ClusterBase::set_link_characteristics(double bw, double lat, s4u::Link::Sha link_lat_ = lat; } -void ClusterBase::add_private_link_at(unsigned int position, std::pair link) +void ClusterBase::add_private_link_at(unsigned long position, + std::pair link) { - private_links_.insert({position, link}); + private_links_.try_emplace(position, link); } -void ClusterBase::set_gateway(unsigned int position, NetPoint* gateway) +void ClusterBase::set_gateway(unsigned long position, NetPoint* gateway) { xbt_assert(not gateway || not gateway->is_netzone(), "ClusterBase: gateway cannot be another netzone %s", gateway->get_cname()); gateways_[position] = gateway; } -NetPoint* ClusterBase::get_gateway(unsigned int position) +NetPoint* ClusterBase::get_gateway(unsigned long position) { - NetPoint* res = nullptr; - auto it = gateways_.find(position); - if (it != gateways_.end()) { - res = it->second; - } - return res; + auto it = gateways_.find(position); + return it == gateways_.end() ? nullptr : it->second; } -void ClusterBase::fill_leaf_from_cb(unsigned int position, const std::vector& dimensions, +void ClusterBase::fill_leaf_from_cb(unsigned long position, const std::vector& dimensions, const s4u::ClusterCallbacks& set_callbacks, NetPoint** node_netpoint, s4u::Link** lb_link, s4u::Link** limiter_link) { @@ -73,13 +67,12 @@ void ClusterBase::fill_leaf_from_cb(unsigned int position, const std::vector dims_array(dimensions.size()); + auto index_to_dims = [&dimensions](unsigned long index) { + std::vector dims_array(dimensions.size()); for (auto i = static_cast(dimensions.size() - 1); i >= 0; --i) { - if (index <= 0) { + if (index == 0) break; - } - unsigned int value = index % dimensions[i]; + unsigned long value = index % dimensions[i]; dims_array[i] = value; index = (index / dimensions[i]); } @@ -90,10 +83,10 @@ void ClusterBase::fill_leaf_from_cb(unsigned int position, const std::vectoris_netzone()) { xbt_assert(gw && not gw->is_netzone(), - "set_netpoint(elem=%u): Netpoint (%s) is a netzone, but gateway (%s) is invalid", position, + "set_netpoint(elem=%lu): Netpoint (%s) is a netzone, but gateway (%s) is invalid", position, netpoint->get_cname(), gw ? gw->get_cname() : "nullptr"); } else { xbt_assert(not gw, "set_netpoint: Netpoint (%s) isn't netzone, gateway must be nullptr", netpoint->get_cname()); @@ -103,7 +96,7 @@ void ClusterBase::fill_leaf_from_cb(unsigned int position, const std::vectorid()), {loopback->get_impl(), loopback->get_impl()}); *lb_link = loopback; @@ -111,7 +104,7 @@ void ClusterBase::fill_leaf_from_cb(unsigned int position, const std::vectorid()), {limiter->get_impl(), limiter->get_impl()}); *limiter_link = limiter; @@ -119,6 +112,4 @@ void ClusterBase::fill_leaf_from_cb(unsigned int position, const std::vector