X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/17c819afc4ceda4000eec137c8fee35168253b4d..b9625f82f86db0674e911887addce45dca31b57f:/src/kernel/routing/FloydZone.cpp diff --git a/src/kernel/routing/FloydZone.cpp b/src/kernel/routing/FloydZone.cpp index f702344828..7bfd8ba334 100644 --- a/src/kernel/routing/FloydZone.cpp +++ b/src/kernel/routing/FloydZone.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2009-2018. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2009-2020. 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. */ @@ -8,6 +8,7 @@ #include "src/surf/network_interface.hpp" #include "src/surf/xml/platf_private.hpp" #include "surf/surf.hpp" +#include "xbt/string.hpp" #include #include @@ -22,18 +23,16 @@ namespace simgrid { namespace kernel { namespace routing { -FloydZone::FloydZone(NetZone* father, std::string name) : RoutedZone(father, name) +FloydZone::FloydZone(NetZoneImpl* father, const std::string& name, resource::NetworkModel* netmodel) + : RoutedZone(father, name, netmodel) { - predecessor_table_ = nullptr; - cost_table_ = nullptr; - link_table_ = nullptr; } FloydZone::~FloydZone() { if (link_table_ == nullptr) // Dealing with a parse error in the file? return; - unsigned int table_size = getTableSize(); + unsigned int table_size = get_table_size(); /* Delete link_table */ for (unsigned int i = 0; i < table_size; i++) for (unsigned int j = 0; j < table_size; j++) @@ -46,9 +45,9 @@ FloydZone::~FloydZone() void FloydZone::get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* route, double* lat) { - unsigned int table_size = getTableSize(); + unsigned int table_size = get_table_size(); - getRouteCheckParams(src, dst); + get_route_check_params(src, dst); /* create a result route */ std::vector route_stack; @@ -56,7 +55,7 @@ void FloydZone::get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* do { int pred = TO_FLOYD_PRED(src->id(), cur); if (pred == -1) - THROWF(arg_error, 0, "No route from '%s' to '%s'", src->get_cname(), dst->get_cname()); + throw std::invalid_argument(xbt::string_printf("No route from '%s' to '%s'", src->get_cname(), dst->get_cname())); route_stack.push_back(TO_FLOYD_LINK(pred, cur)); cur = pred; } while (cur != src->id()); @@ -68,7 +67,7 @@ void FloydZone::get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* NetPoint* prev_dst_gw = nullptr; while (not route_stack.empty()) { - RouteCreationArgs* e_route = route_stack.back(); + const RouteCreationArgs* e_route = route_stack.back(); route_stack.pop_back(); if (hierarchy_ == RoutingMode::recursive && prev_dst_gw != nullptr && prev_dst_gw->get_cname() != e_route->gw_src->get_cname()) { @@ -78,7 +77,7 @@ void FloydZone::get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* for (auto const& link : e_route->link_list) { route->link_list.push_back(link); if (lat) - *lat += link->latency(); + *lat += link->get_latency(); } prev_dst_gw = e_route->gw_dst; @@ -86,12 +85,12 @@ void FloydZone::get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* } void FloydZone::add_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoint* gw_dst, - std::vector& link_list, bool symmetrical) + std::vector& link_list, bool symmetrical) { /* set the size of table routing */ - unsigned int table_size = getTableSize(); + unsigned int table_size = get_table_size(); - addRouteCheckParams(src, dst, gw_src, gw_dst, link_list, symmetrical); + add_route_check_params(src, dst, gw_src, gw_dst, link_list, symmetrical); if (not link_table_) { /* Create Cost, Predecessor and Link tables */ @@ -119,7 +118,7 @@ void FloydZone::add_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoi dst->get_cname()); TO_FLOYD_LINK(src->id(), dst->id()) = - newExtendedRoute(hierarchy_, src, dst, gw_src, gw_dst, link_list, symmetrical, 1); + new_extended_route(hierarchy_, src, dst, gw_src, gw_dst, link_list, symmetrical, true); TO_FLOYD_PRED(src->id(), dst->id()) = src->id(); TO_FLOYD_COST(src->id(), dst->id()) = (TO_FLOYD_LINK(src->id(), dst->id()))->link_list.size(); @@ -147,7 +146,7 @@ void FloydZone::add_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoi src->get_cname(), gw_dst->get_cname()); TO_FLOYD_LINK(dst->id(), src->id()) = - newExtendedRoute(hierarchy_, src, dst, gw_src, gw_dst, link_list, symmetrical, 0); + new_extended_route(hierarchy_, src, dst, gw_src, gw_dst, link_list, symmetrical, false); TO_FLOYD_PRED(dst->id(), src->id()) = dst->id(); TO_FLOYD_COST(dst->id(), src->id()) = (TO_FLOYD_LINK(dst->id(), src->id()))->link_list.size(); /* count of links, old model assume 1 */ @@ -157,7 +156,7 @@ void FloydZone::add_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoi void FloydZone::seal() { /* set the size of table routing */ - unsigned int table_size = getTableSize(); + unsigned int table_size = get_table_size(); if (not link_table_) { /* Create Cost, Predecessor and Link tables */ @@ -175,13 +174,13 @@ void FloydZone::seal() } /* Add the loopback if needed */ - if (surf_network_model->loopback_ && hierarchy_ == RoutingMode::base) { + if (network_model_->loopback_ && hierarchy_ == RoutingMode::base) { for (unsigned int i = 0; i < table_size; i++) { - RouteCreationArgs* e_route = TO_FLOYD_LINK(i, i); - if (not e_route) { - e_route = new RouteCreationArgs(); - e_route->link_list.push_back(surf_network_model->loopback_); - TO_FLOYD_LINK(i, i) = e_route; + RouteCreationArgs* route = TO_FLOYD_LINK(i, i); + if (not route) { + route = new RouteCreationArgs(); + route->link_list.push_back(network_model_->loopback_); + TO_FLOYD_LINK(i, i) = route; TO_FLOYD_PRED(i, i) = i; TO_FLOYD_COST(i, i) = 1; }