Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
empty RoutingPlatf: move the loopback link to the network_model(s)
authorMartin Quinson <martin.quinson@loria.fr>
Tue, 15 Nov 2016 22:35:16 +0000 (23:35 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Tue, 15 Nov 2016 22:35:16 +0000 (23:35 +0100)
src/kernel/routing/AsDijkstra.cpp
src/kernel/routing/AsFloyd.cpp
src/kernel/routing/AsFull.cpp
src/surf/network_cm02.cpp
src/surf/network_constant.cpp
src/surf/network_interface.hpp
src/surf/network_ns3.cpp
src/surf/ptask_L07.cpp
src/surf/surf_routing.cpp
src/surf/surf_routing.hpp

index 02106e6..cf697f0 100644 (file)
@@ -51,7 +51,7 @@ void AsDijkstra::seal()
     graphNodeMap_ = xbt_dict_new_homogeneous(&graph_node_map_elem_free);
 
   /* Add the loopback if needed */
     graphNodeMap_ = xbt_dict_new_homogeneous(&graph_node_map_elem_free);
 
   /* Add the loopback if needed */
-  if (routing_platf->loopback_ && hierarchy_ == RoutingMode::base) {
+  if (surf_network_model->loopback_ && hierarchy_ == RoutingMode::base) {
     xbt_dynar_foreach(xbt_graph_get_nodes(routeGraph_), cursor, node) {
       xbt_edge_t edge = nullptr;
 
     xbt_dynar_foreach(xbt_graph_get_nodes(routeGraph_), cursor, node) {
       xbt_edge_t edge = nullptr;
 
@@ -66,7 +66,7 @@ void AsDijkstra::seal()
       if (!found) {
         sg_platf_route_cbarg_t e_route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
         e_route->link_list = new std::vector<Link*>();
       if (!found) {
         sg_platf_route_cbarg_t e_route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
         e_route->link_list = new std::vector<Link*>();
-        e_route->link_list->push_back(routing_platf->loopback_);
+        e_route->link_list->push_back(surf_network_model->loopback_);
         xbt_graph_new_edge(routeGraph_, node, node, e_route);
       }
     }
         xbt_graph_new_edge(routeGraph_, node, node, e_route);
       }
     }
index 2b5d921..6aa1816 100644 (file)
@@ -170,7 +170,7 @@ void AsFloyd::seal(){
   }
 
   /* Add the loopback if needed */
   }
 
   /* Add the loopback if needed */
-  if (routing_platf->loopback_ && hierarchy_ == RoutingMode::base) {
+  if (surf_network_model->loopback_ && hierarchy_ == RoutingMode::base) {
     for (unsigned int i = 0; i < table_size; i++) {
       sg_platf_route_cbarg_t e_route = TO_FLOYD_LINK(i, i);
       if (!e_route) {
     for (unsigned int i = 0; i < table_size; i++) {
       sg_platf_route_cbarg_t e_route = TO_FLOYD_LINK(i, i);
       if (!e_route) {
@@ -178,7 +178,7 @@ void AsFloyd::seal(){
         e_route->gw_src = nullptr;
         e_route->gw_dst = nullptr;
         e_route->link_list = new std::vector<Link*>();
         e_route->gw_src = nullptr;
         e_route->gw_dst = nullptr;
         e_route->link_list = new std::vector<Link*>();
-        e_route->link_list->push_back(routing_platf->loopback_);
+        e_route->link_list->push_back(surf_network_model->loopback_);
         TO_FLOYD_LINK(i, i) = e_route;
         TO_FLOYD_PRED(i, i) = i;
         TO_FLOYD_COST(i, i) = 1;
         TO_FLOYD_LINK(i, i) = e_route;
         TO_FLOYD_PRED(i, i) = i;
         TO_FLOYD_COST(i, i) = 1;
index 24960df..62df1a6 100644 (file)
@@ -29,7 +29,7 @@ void AsFull::seal() {
     routingTable_ = xbt_new0(sg_platf_route_cbarg_t, table_size * table_size);
 
   /* Add the loopback if needed */
     routingTable_ = xbt_new0(sg_platf_route_cbarg_t, table_size * table_size);
 
   /* Add the loopback if needed */
-  if (routing_platf->loopback_ && hierarchy_ == RoutingMode::base) {
+  if (surf_network_model->loopback_ && hierarchy_ == RoutingMode::base) {
     for (i = 0; i < table_size; i++) {
       e_route = TO_ROUTE_FULL(i, i);
       if (!e_route) {
     for (i = 0; i < table_size; i++) {
       e_route = TO_ROUTE_FULL(i, i);
       if (!e_route) {
@@ -37,7 +37,7 @@ void AsFull::seal() {
         e_route->gw_src = nullptr;
         e_route->gw_dst = nullptr;
         e_route->link_list = new std::vector<Link*>();
         e_route->gw_src = nullptr;
         e_route->gw_dst = nullptr;
         e_route->link_list = new std::vector<Link*>();
-        e_route->link_list->push_back(routing_platf->loopback_);
+        e_route->link_list->push_back(surf_network_model->loopback_);
         TO_ROUTE_FULL(i, i) = e_route;
       }
     }
         TO_ROUTE_FULL(i, i) = e_route;
       }
     }
index 3a27f59..96c31e0 100644 (file)
@@ -152,8 +152,9 @@ NetworkCm02Model::NetworkCm02Model()
   }
 
   maxminSystem_ = lmm_system_new(selectiveUpdate_);
   }
 
   maxminSystem_ = lmm_system_new(selectiveUpdate_);
+  loopback_     = createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE);
 
 
-  routing_model_create(createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE));
+  routing_model_create();
 
   if (updateMechanism_ == UM_LAZY) {
     actionHeap_ = xbt_heap_new(8, nullptr);
 
   if (updateMechanism_ == UM_LAZY) {
     actionHeap_ = xbt_heap_new(8, nullptr);
index f349fbd..bbf16a8 100644 (file)
@@ -17,7 +17,7 @@ void surf_network_model_init_Constant()
   surf_network_model = new simgrid::surf::NetworkConstantModel();
   all_existing_models->push_back(surf_network_model);
 
   surf_network_model = new simgrid::surf::NetworkConstantModel();
   all_existing_models->push_back(surf_network_model);
 
-  routing_model_create(nullptr);
+  routing_model_create();
 }
 
 namespace simgrid {
 }
 
 namespace simgrid {
index afeadcb..c5522a8 100644 (file)
@@ -119,6 +119,8 @@ namespace simgrid {
        */
       virtual double bandwidthConstraint(double rate, double bound, double size);
       double nextOccuringEventFull(double now) override;
        */
       virtual double bandwidthConstraint(double rate, double bound, double size);
       double nextOccuringEventFull(double now) override;
+
+      Link* loopback_ = nullptr;
     };
 
     /************
     };
 
     /************
index 267b726..bf5d0f7 100644 (file)
@@ -174,7 +174,7 @@ namespace surf {
 NetworkNS3Model::NetworkNS3Model() : NetworkModel() {
   ns3_initialize(ns3_tcp_model.get().c_str());
 
 NetworkNS3Model::NetworkNS3Model() : NetworkModel() {
   ns3_initialize(ns3_tcp_model.get().c_str());
 
-  routing_model_create(nullptr);
+  routing_model_create();
   simgrid::s4u::Host::onCreation.connect(ns3_add_host);
   simgrid::kernel::routing::netcardCreatedCallbacks.connect(ns3_add_netcard);
   simgrid::surf::on_cluster.connect (&parse_ns3_add_cluster);
   simgrid::s4u::Host::onCreation.connect(ns3_add_host);
   simgrid::kernel::routing::netcardCreatedCallbacks.connect(ns3_add_netcard);
   simgrid::surf::on_cluster.connect (&parse_ns3_add_cluster);
index caee551..a986926 100644 (file)
@@ -41,7 +41,7 @@ HostL07Model::HostL07Model() : HostModel() {
   surf_network_model = new NetworkL07Model(this,maxminSystem_);
   surf_cpu_model_pm = new CpuL07Model(this,maxminSystem_);
 
   surf_network_model = new NetworkL07Model(this,maxminSystem_);
   surf_cpu_model_pm = new CpuL07Model(this,maxminSystem_);
 
-  routing_model_create(surf_network_model->createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE));
+  routing_model_create();
 }
 
 HostL07Model::~HostL07Model() = default;
 }
 
 HostL07Model::~HostL07Model() = default;
@@ -61,6 +61,7 @@ NetworkL07Model::NetworkL07Model(HostL07Model *hmodel, lmm_system_t sys)
   , hostModel_(hmodel)
   {
     maxminSystem_ = sys;
   , hostModel_(hmodel)
   {
     maxminSystem_ = sys;
+    loopback_     = createLink("__loopback__", 498000000, 0.000015, SURF_LINK_FATPIPE);
   }
 NetworkL07Model::~NetworkL07Model()
 {
   }
 NetworkL07Model::~NetworkL07Model()
 {
index 3dee138..7f18490 100644 (file)
@@ -129,9 +129,9 @@ xbt_dynar_t RoutingPlatf::getOneLinkRoutes(){
 }}}
 
 /** @brief create the root AS */
 }}}
 
 /** @brief create the root AS */
-void routing_model_create(Link *loopback)
+void routing_model_create()
 {
 {
-  routing_platf = new simgrid::kernel::routing::RoutingPlatf(loopback);
+  routing_platf = new simgrid::kernel::routing::RoutingPlatf();
 }
 
 /* ************************************************************************** */
 }
 
 /* ************************************************************************** */
@@ -165,10 +165,7 @@ void routing_exit() {
   delete routing_platf;
 }
 
   delete routing_platf;
 }
 
-simgrid::kernel::routing::RoutingPlatf::RoutingPlatf(simgrid::surf::Link *loopback)
-: loopback_(loopback)
-{
-}
+simgrid::kernel::routing::RoutingPlatf::RoutingPlatf() = default;
 simgrid::kernel::routing::RoutingPlatf::~RoutingPlatf()
 {
   delete root_;
 simgrid::kernel::routing::RoutingPlatf::~RoutingPlatf()
 {
   delete root_;
index d11b9ca..71d0d14 100644 (file)
@@ -18,7 +18,7 @@
 #include <vector>
 
 SG_BEGIN_DECL()
 #include <vector>
 
 SG_BEGIN_DECL()
-XBT_PUBLIC(void) routing_model_create(Link *loopback);
+XBT_PUBLIC(void) routing_model_create();
 XBT_PRIVATE xbt_node_t new_xbt_graph_node (xbt_graph_t graph, const char *name, xbt_dict_t nodes);
 XBT_PRIVATE xbt_edge_t new_xbt_graph_edge (xbt_graph_t graph, xbt_node_t s, xbt_node_t d, xbt_dict_t edges);
 SG_END_DECL()
 XBT_PRIVATE xbt_node_t new_xbt_graph_node (xbt_graph_t graph, const char *name, xbt_dict_t nodes);
 XBT_PRIVATE xbt_edge_t new_xbt_graph_edge (xbt_graph_t graph, xbt_node_t s, xbt_node_t d, xbt_dict_t edges);
 SG_END_DECL()
@@ -107,10 +107,9 @@ public:
  */
 XBT_PUBLIC_CLASS RoutingPlatf {
 public:
  */
 XBT_PUBLIC_CLASS RoutingPlatf {
 public:
-  explicit RoutingPlatf(Link *loopback);
+  explicit RoutingPlatf();
   ~RoutingPlatf();
   AsImpl *root_ = nullptr;
   ~RoutingPlatf();
   AsImpl *root_ = nullptr;
-  Link *loopback_;
   xbt_dynar_t getOneLinkRoutes();
   void getRouteAndLatency(NetCard *src, NetCard *dst, std::vector<Link*> * links, double *latency);
 };
   xbt_dynar_t getOneLinkRoutes();
   void getRouteAndLatency(NetCard *src, NetCard *dst, std::vector<Link*> * links, double *latency);
 };