X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d785a64b1830b6a5d05561316ef7161ee1c67671..b2f3150048cd87c9e16e251fea65c40221fd56ea:/src/kernel/routing/AsFull.cpp diff --git a/src/kernel/routing/AsFull.cpp b/src/kernel/routing/AsFull.cpp index e0b6cda7fe..95f8f72b40 100644 --- a/src/kernel/routing/AsFull.cpp +++ b/src/kernel/routing/AsFull.cpp @@ -13,9 +13,8 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_full, surf, "Routing part of surf"); namespace simgrid { namespace kernel { namespace routing { - AsFull::AsFull(const char*name) - : AsRoutedGraph(name) - { +AsFull::AsFull(As* father, const char* name) : AsRoutedGraph(father, name) +{ } void AsFull::seal() { @@ -23,14 +22,14 @@ void AsFull::seal() { sg_platf_route_cbarg_t e_route; /* set utils vars */ - int table_size = (int)xbt_dynar_length(vertices_); + int table_size = static_cast(vertices_.size()); /* Create table if necessary */ if (!routingTable_) 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) { @@ -38,7 +37,7 @@ void AsFull::seal() { e_route->gw_src = nullptr; e_route->gw_dst = nullptr; e_route->link_list = new std::vector(); - 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; } } @@ -47,11 +46,10 @@ void AsFull::seal() { AsFull::~AsFull(){ if (routingTable_) { - int table_size = (int)xbt_dynar_length(vertices_); - int i, j; + int table_size = static_cast(vertices_.size()); /* Delete routing table */ - for (i = 0; i < table_size; i++) - for (j = 0; j < table_size; j++) { + for (int i = 0; i < table_size; i++) + for (int j = 0; j < table_size; j++) { if (TO_ROUTE_FULL(i,j)){ delete TO_ROUTE_FULL(i,j)->link_list; xbt_free(TO_ROUTE_FULL(i,j)); @@ -61,72 +59,69 @@ AsFull::~AsFull(){ } } -void AsFull::getRouteAndLatency(NetCard *src, NetCard *dst, sg_platf_route_cbarg_t res, double *lat) +void AsFull::getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t res, double* lat) { - XBT_DEBUG("full_get_route_and_latency from %s[%d] to %s[%d]", - src->name(), src->id(), dst->name(), dst->id()); - - /* set utils vars */ - size_t table_size = xbt_dynar_length(vertices_); - - sg_platf_route_cbarg_t e_route = nullptr; + XBT_DEBUG("full getLocalRoute from %s[%d] to %s[%d]", src->name().c_str(), src->id(), dst->name().c_str(), dst->id()); - e_route = TO_ROUTE_FULL(src->id(), dst->id()); + size_t table_size = vertices_.size(); + sg_platf_route_cbarg_t e_route = TO_ROUTE_FULL(src->id(), dst->id()); - if (e_route) { + if (e_route != nullptr) { res->gw_src = e_route->gw_src; res->gw_dst = e_route->gw_dst; for (auto link : *e_route->link_list) { res->link_list->push_back(link); if (lat) - *lat += static_cast(link)->getLatency(); + *lat += link->latency(); } } } void AsFull::addRoute(sg_platf_route_cbarg_t route) { - NetCard *src_net_elm = route->src; - NetCard *dst_net_elm = route->dst; - const char *src = src_net_elm->name(); - const char *dst = dst_net_elm->name(); + NetCard* src = route->src; + NetCard* dst = route->dst; + const char* srcName = src->name().c_str(); + const char* dstName = dst->name().c_str(); addRouteCheckParams(route); - size_t table_size = xbt_dynar_length(vertices_); + size_t table_size = vertices_.size(); if (!routingTable_) routingTable_ = xbt_new0(sg_platf_route_cbarg_t, table_size * table_size); /* Check that the route does not already exist */ if (route->gw_dst) // AS route (to adapt the error message, if any) - xbt_assert(nullptr == TO_ROUTE_FULL(src_net_elm->id(), dst_net_elm->id()), - "The route between %s@%s and %s@%s already exists (Rq: routes are symmetrical by default).", - src,route->gw_src->name(),dst,route->gw_dst->name()); + xbt_assert(nullptr == TO_ROUTE_FULL(src->id(), dst->id()), + "The route between %s@%s and %s@%s already exists (Rq: routes are symmetrical by default).", srcName, + route->gw_src->name().c_str(), dstName, route->gw_dst->name().c_str()); else - xbt_assert(nullptr == TO_ROUTE_FULL(src_net_elm->id(), dst_net_elm->id()), - "The route between %s and %s already exists (Rq: routes are symmetrical by default).", src,dst); + xbt_assert(nullptr == TO_ROUTE_FULL(src->id(), dst->id()), + "The route between %s and %s already exists (Rq: routes are symmetrical by default).", srcName, dstName); /* Add the route to the base */ - TO_ROUTE_FULL(src_net_elm->id(), dst_net_elm->id()) = newExtendedRoute(hierarchy_, route, 1); - TO_ROUTE_FULL(src_net_elm->id(), dst_net_elm->id())->link_list->shrink_to_fit(); + TO_ROUTE_FULL(src->id(), dst->id()) = newExtendedRoute(hierarchy_, route, 1); + TO_ROUTE_FULL(src->id(), dst->id())->link_list->shrink_to_fit(); - if (route->symmetrical == true && src_net_elm != dst_net_elm) { + if (route->symmetrical == true && src != dst) { if (route->gw_dst && route->gw_src) { NetCard* gw_tmp = route->gw_src; route->gw_src = route->gw_dst; route->gw_dst = gw_tmp; } if (route->gw_dst) // AS route (to adapt the error message, if any) - xbt_assert(nullptr == TO_ROUTE_FULL(dst_net_elm->id(), src_net_elm->id()), + xbt_assert( + nullptr == TO_ROUTE_FULL(dst->id(), src->id()), "The route between %s@%s and %s@%s already exists. You should not declare the reverse path as symmetrical.", - dst,route->gw_dst->name(),src,route->gw_src->name()); + dstName, route->gw_dst->name().c_str(), srcName, route->gw_src->name().c_str()); else - xbt_assert(nullptr == TO_ROUTE_FULL(dst_net_elm->id(), src_net_elm->id()), - "The route between %s and %s already exists. You should not declare the reverse path as symmetrical.", dst,src); + xbt_assert(nullptr == TO_ROUTE_FULL(dst->id(), src->id()), + "The route between %s and %s already exists. You should not declare the reverse path as symmetrical.", + dstName, srcName); - TO_ROUTE_FULL(dst_net_elm->id(), src_net_elm->id()) = newExtendedRoute(hierarchy_, route, 0); - TO_ROUTE_FULL(dst_net_elm->id(), src_net_elm->id())->link_list->shrink_to_fit(); + TO_ROUTE_FULL(dst->id(), src->id()) = newExtendedRoute(hierarchy_, route, 0); + TO_ROUTE_FULL(dst->id(), src->id())->link_list->shrink_to_fit(); } }