Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
NetZoneImpl::network_model_: get() and private object
authorBruno Donassolo <bruno.donassolo@inria.fr>
Thu, 4 Mar 2021 09:49:51 +0000 (10:49 +0100)
committerBruno Donassolo <bruno.donassolo@inria.fr>
Tue, 9 Mar 2021 14:17:12 +0000 (15:17 +0100)
include/simgrid/kernel/routing/NetZoneImpl.hpp
src/kernel/routing/DijkstraZone.cpp
src/kernel/routing/FloydZone.cpp
src/kernel/routing/FullZone.cpp
src/kernel/routing/VivaldiZone.cpp
src/surf/sg_platf.cpp

index 0765aa4..85cf2b5 100644 (file)
@@ -70,6 +70,7 @@ class XBT_PUBLIC NetZoneImpl : public xbt::PropertyHolder {
 
   std::map<std::pair<NetPoint*, NetPoint*>, BypassRoute*> bypass_routes_; // src x dst -> route
   routing::NetPoint* netpoint_ = nullptr;                                 // Our representative in the father NetZone
+  resource::NetworkModel* network_model_;
 
 protected:
   explicit NetZoneImpl(NetZoneImpl* father, const std::string& name, resource::NetworkModel* network_model);
@@ -101,8 +102,6 @@ public:
   /* FIXME: protect the following fields once the construction madness is sorted out */
   RoutingMode hierarchy_ = RoutingMode::unset;
 
-  resource::NetworkModel* network_model_;
-
   resource::NetworkModel* get_network_model() const { return network_model_; }
   const s4u::NetZone* get_iface() const { return &piface_; }
   s4u::NetZone* get_iface() { return &piface_; }
index 3c3378d..7855c4f 100644 (file)
@@ -44,7 +44,7 @@ void DijkstraZone::seal()
   xbt_node_t node = nullptr;
 
   /* Add the loopback if needed */
-  if (network_model_->loopback_ && hierarchy_ == RoutingMode::base) {
+  if (get_network_model()->loopback_ && hierarchy_ == RoutingMode::base) {
     xbt_dynar_foreach (xbt_graph_get_nodes(route_graph_.get()), cursor, node) {
       bool found = false;
       xbt_edge_t edge = nullptr;
@@ -58,7 +58,7 @@ void DijkstraZone::seal()
 
       if (not found) {
         auto* route = new simgrid::kernel::routing::RouteCreationArgs();
-        route->link_list.push_back(network_model_->loopback_);
+        route->link_list.push_back(get_network_model()->loopback_);
         xbt_graph_new_edge(route_graph_.get(), node, node, route);
       }
     }
index 7b2c688..e374648 100644 (file)
@@ -146,12 +146,12 @@ void FloydZone::seal()
   init_tables(table_size);
 
   /* Add the loopback if needed */
-  if (network_model_->loopback_ && hierarchy_ == RoutingMode::base) {
+  if (get_network_model()->loopback_ && hierarchy_ == RoutingMode::base) {
     for (unsigned int i = 0; i < table_size; i++) {
       RouteCreationArgs* route = TO_FLOYD_LINK(i, i);
       if (not route) {
         route = new RouteCreationArgs();
-        route->link_list.push_back(network_model_->loopback_);
+        route->link_list.push_back(get_network_model()->loopback_);
         TO_FLOYD_LINK(i, i) = route;
         TO_FLOYD_PRED(i, i) = i;
         TO_FLOYD_COST(i, i) = 1;
index e912ea0..b7c0f33 100644 (file)
@@ -30,12 +30,12 @@ void FullZone::seal()
     routing_table_.resize(table_size * table_size, nullptr);
 
   /* Add the loopback if needed */
-  if (network_model_->loopback_ && hierarchy_ == RoutingMode::base) {
+  if (get_network_model()->loopback_ && hierarchy_ == RoutingMode::base) {
     for (unsigned int i = 0; i < table_size; i++) {
       RouteCreationArgs* route = TO_ROUTE_FULL(i, i);
       if (not route) {
         route = new RouteCreationArgs();
-        route->link_list.push_back(network_model_->loopback_);
+        route->link_list.push_back(get_network_model()->loopback_);
         TO_ROUTE_FULL(i, i) = route;
       }
     }
index 4b392c5..05c2463 100644 (file)
@@ -76,10 +76,10 @@ void VivaldiZone::set_peer_link(NetPoint* netpoint, double bw_in, double bw_out,
   std::string link_up      = "link_" + netpoint->get_name() + "_UP";
   std::string link_down    = "link_" + netpoint->get_name() + "_DOWN";
   resource::LinkImpl* linkUp =
-      network_model_->create_link(link_up, std::vector<double>(1, bw_out), s4u::Link::SharingPolicy::SHARED);
+      get_network_model()->create_link(link_up, std::vector<double>(1, bw_out), s4u::Link::SharingPolicy::SHARED);
   linkUp->seal();
   resource::LinkImpl* linkDown =
-      network_model_->create_link(link_down, std::vector<double>(1, bw_in), s4u::Link::SharingPolicy::SHARED);
+      get_network_model()->create_link(link_down, std::vector<double>(1, bw_in), s4u::Link::SharingPolicy::SHARED);
   linkDown->seal();
   private_links_.insert({netpoint->id(), {linkUp, linkDown}});
 }
index fe17a3c..4d91bb4 100644 (file)
@@ -516,7 +516,7 @@ simgrid::kernel::routing::NetZoneImpl* sg_platf_new_Zone_begin(const simgrid::ke
   simgrid::kernel::resource::NetworkModel* netmodel =
       current_routing == nullptr ? static_cast<simgrid::kernel::resource::NetworkModel*>(
                                        models_by_type[simgrid::kernel::resource::Model::Type::NETWORK][0])
-                                 : current_routing->network_model_;
+                                 : current_routing->get_network_model();
 
   if (strcasecmp(zone->routing.c_str(), "Cluster") == 0) {
     new_zone = new simgrid::kernel::routing::ClusterZone(current_routing, zone->id, netmodel);