X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6e8d7bf586f9ed41fe3bcd965b5a7eb9b7cb53a9..2c8c164d58104acb6256b6d8efd476a6a2165b8a:/src/surf/surf_routing.cpp diff --git a/src/surf/surf_routing.cpp b/src/surf/surf_routing.cpp index 8bad71793b..5253c9723d 100644 --- a/src/surf/surf_routing.cpp +++ b/src/surf/surf_routing.cpp @@ -21,6 +21,7 @@ #include "src/surf/surf_routing_full.hpp" #include "src/surf/surf_routing_vivaldi.hpp" +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf"); namespace simgrid { namespace surf { @@ -35,13 +36,31 @@ namespace surf { As::~As() { xbt_dict_free(&sons_); - xbt_dynar_free(&p_indexNetworkElm); + xbt_dynar_free(&vertices_); xbt_dynar_free(&upDownLinks); xbt_free(name_); if (netcard_) delete netcard_; } + sg_platf_route_cbarg_t As::getBypassRoute(NetCard * /*src*/, NetCard * /*dst*/, double * /*lat*/) { + return NULL; + } + + + int As::addComponent(NetCard *elm) { + XBT_DEBUG("Load component \"%s\"", elm->name()); + xbt_dynar_push_as(vertices_, NetCard*, elm); + return xbt_dynar_length(vertices_)-1; + } + + void As::parseRoute(sg_platf_route_cbarg_t /*route*/){ + THROW_IMPOSSIBLE; /* No. */ + } + void As::parseBypassroute(sg_platf_route_cbarg_t /*e_route*/){ + THROW_IMPOSSIBLE; + } + }} // namespace simgrid::surf /** @@ -79,7 +98,6 @@ simgrid::surf::NetCard *sg_netcard_by_name_or_null(const char *name) /* Global vars */ simgrid::surf::RoutingPlatf *routing_platf = NULL; -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf"); /** The current AS in the parsing */ static simgrid::surf::As *current_routing = NULL; @@ -105,12 +123,12 @@ void sg_platf_new_hostlink(sg_platf_host_link_cbarg_t netcard_arg) xbt_assert(link_up_down.link_down, "Link '%s' not found!",netcard_arg->link_down); // If dynar is is greater than netcard id and if the host_link is already defined - if((int)xbt_dynar_length(current_routing->upDownLinks) > netcard->getId() && - xbt_dynar_get_as(current_routing->upDownLinks, netcard->getId(), void*)) + if((int)xbt_dynar_length(current_routing->upDownLinks) > netcard->id() && + xbt_dynar_get_as(current_routing->upDownLinks, netcard->id(), void*)) surf_parse_error("Host_link for '%s' is already defined!",netcard_arg->id); - XBT_DEBUG("Push Host_link for host '%s' to position %d", netcard->getName(), netcard->getId()); - xbt_dynar_set_as(current_routing->upDownLinks, netcard->getId(), s_surf_parsing_link_up_down_t, link_up_down); + XBT_DEBUG("Push Host_link for host '%s' to position %d", netcard->name(), netcard->id()); + xbt_dynar_set_as(current_routing->upDownLinks, netcard->id(), s_surf_parsing_link_up_down_t, link_up_down); } void sg_platf_new_trace(sg_platf_trace_cbarg_t trace) @@ -168,12 +186,12 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS) /* make a new routing component */ simgrid::surf::NetCard *netcard = new simgrid::surf::NetCardImpl(new_as->name_, SURF_NETWORK_ELEMENT_AS, current_routing); - if (current_routing == NULL && routing_platf->p_root == NULL) { + if (current_routing == NULL && routing_platf->root_ == NULL) { /* it is the first one */ new_as->father_ = NULL; - routing_platf->p_root = new_as; + routing_platf->root_ = new_as; netcard->setId(-1); - } else if (current_routing != NULL && routing_platf->p_root != NULL) { + } else if (current_routing != NULL && routing_platf->root_ != NULL) { xbt_assert(!xbt_dict_get_or_null(current_routing->sons_, AS->id), "The AS \"%s\" already exists", AS->id); @@ -186,14 +204,14 @@ void routing_AS_begin(sg_platf_AS_cbarg_t AS) xbt_dict_set(current_routing->sons_, AS->id, (void *) new_as, NULL); /* add to the father element list */ - netcard->setId(current_routing->parseAS(netcard)); + netcard->setId(current_routing->addComponent(netcard)); } else { THROWF(arg_error, 0, "All defined components must belong to a AS"); } - xbt_lib_set(as_router_lib, netcard->getName(), ROUTING_ASR_LEVEL, + xbt_lib_set(as_router_lib, netcard->name(), ROUTING_ASR_LEVEL, (void *) netcard); - XBT_DEBUG("Having set name '%s' id '%d'", new_as->name_, netcard->getId()); + XBT_DEBUG("Having set name '%s' id '%d'", new_as->name_, netcard->id()); /* set the new current component of the tree */ current_routing = new_as; @@ -252,11 +270,11 @@ static void elements_father(sg_netcard_t src, sg_netcard_t dst, /* (1) find the as where the src and dst are located */ sg_netcard_t src_data = src; sg_netcard_t dst_data = dst; - src_as = src_data->getRcComponent(); - dst_as = dst_data->getRcComponent(); + src_as = src_data->containingAS(); + dst_as = dst_data->containingAS(); #ifndef NDEBUG - char* src_name = src_data->getName(); - char* dst_name = dst_data->getName(); + char* src_name = src_data->name(); + char* dst_name = dst_data->name(); #endif xbt_assert(src_as && dst_as, @@ -315,7 +333,7 @@ static void _get_route_and_latency( memset(&route,0,sizeof(route)); xbt_assert(src && dst, "bad parameters for \"_get_route_latency\" method"); - XBT_DEBUG("Solve route/latency \"%s\" to \"%s\"", src->getName(), dst->getName()); + XBT_DEBUG("Solve route/latency \"%s\" to \"%s\"", src->name(), dst->name()); /* Find how src and dst are interconnected */ simgrid::surf::As *common_father, *src_father, *dst_father; @@ -346,7 +364,7 @@ static void _get_route_and_latency( /* Not in the same AS, no bypass. We'll have to find our path between the ASes recursively*/ - route.link_list = xbt_dynar_new(sizeof(sg_routing_link_t), NULL); + route.link_list = xbt_dynar_new(sizeof(Link*), NULL); // Find the net_card corresponding to father simgrid::surf::NetCard *src_father_netcard = src_father->netcard_; simgrid::surf::NetCard *dst_father_netcard = dst_father->netcard_; @@ -355,7 +373,7 @@ static void _get_route_and_latency( &route, latency); xbt_assert((route.gw_src != NULL) && (route.gw_dst != NULL), - "bad gateways for route from \"%s\" to \"%s\"", src->getName(), dst->getName()); + "bad gateways for route from \"%s\" to \"%s\"", src->name(), dst->name()); sg_netcard_t src_gateway_net_elm = route.gw_src; sg_netcard_t dst_gateway_net_elm = route.gw_dst; @@ -372,7 +390,7 @@ static void _get_route_and_latency( } AS_t surf_platf_get_root(routing_platf_t platf){ - return platf->p_root; + return platf->root_; } e_surf_network_element_type_t surf_routing_edge_get_rc_type(sg_netcard_t netcard){ @@ -398,20 +416,20 @@ namespace surf { */ void RoutingPlatf::getRouteAndLatency(NetCard *src, NetCard *dst, xbt_dynar_t* route, double *latency) { - XBT_DEBUG("getRouteAndLatency from %s to %s", src->getName(), dst->getName()); + XBT_DEBUG("getRouteAndLatency from %s to %s", src->name(), dst->name()); if (NULL == *route) { - xbt_dynar_reset(routing_platf->p_lastRoute); - *route = routing_platf->p_lastRoute; + xbt_dynar_reset(routing_platf->lastRoute_); + *route = routing_platf->lastRoute_; } _get_route_and_latency(src, dst, route, latency); xbt_assert(!latency || *latency >= 0.0, - "negative latency on route between \"%s\" and \"%s\"", src->getName(), dst->getName()); + "negative latency on route between \"%s\" and \"%s\"", src->name(), dst->name()); } xbt_dynar_t RoutingPlatf::getOneLinkRoutes(){ - return recursiveGetOneLinkRoutes(p_root); + return recursiveGetOneLinkRoutes(root_); } xbt_dynar_t RoutingPlatf::recursiveGetOneLinkRoutes(As *rc) @@ -460,9 +478,9 @@ void routing_cluster_add_backbone(simgrid::surf::Link* bb) { simgrid::surf::AsCluster *cluster = dynamic_cast(current_routing); xbt_assert(cluster, "Only hosts from Cluster can get a backbone."); - xbt_assert(nullptr == cluster->p_backbone, "Cluster %s already has a backbone link!", cluster->name_); + xbt_assert(nullptr == cluster->backbone_, "Cluster %s already has a backbone link!", cluster->name_); - cluster->p_backbone = bb; + cluster->backbone_ = bb; XBT_DEBUG("Add a backbone to AS '%s'", current_routing->name_); } @@ -609,7 +627,7 @@ void sg_platf_new_peer(sg_platf_peer_cbarg_t peer) router.id = router_id; router.coord = peer->coord; sg_platf_new_router(&router); - static_cast(current_routing)->p_router = static_cast(xbt_lib_get_or_null(as_router_lib, router.id, ROUTING_ASR_LEVEL)); + static_cast(current_routing)->router_ = static_cast(xbt_lib_get_or_null(as_router_lib, router.id, ROUTING_ASR_LEVEL)); XBT_DEBUG(""); sg_platf_new_AS_end(); @@ -795,20 +813,20 @@ namespace simgrid { namespace surf { RoutingPlatf::RoutingPlatf(void *loopback) - : p_loopback(loopback) + : loopback_(loopback) { } RoutingPlatf::~RoutingPlatf() { - xbt_dynar_free(&p_lastRoute); - finalize_rec(p_root); + xbt_dynar_free(&lastRoute_); + finalize_rec(root_); } } } AS_t surf_AS_get_routing_root() { - return routing_platf->p_root; + return routing_platf->root_; } const char *surf_AS_get_name(simgrid::surf::As *as) { @@ -837,7 +855,7 @@ static simgrid::surf::As *surf_AS_recursive_get_by_name( simgrid::surf::As *surf_AS_get_by_name(const char * name) { - simgrid::surf::As *as = surf_AS_recursive_get_by_name(routing_platf->p_root, name); + simgrid::surf::As *as = surf_AS_recursive_get_by_name(routing_platf->root_, name); if(as == NULL) XBT_WARN("Impossible to find an AS with name %s, please check your input", name); return as; @@ -850,13 +868,13 @@ xbt_dict_t surf_AS_get_routing_sons(simgrid::surf::As *as) xbt_dynar_t surf_AS_get_hosts(simgrid::surf::As *as) { - xbt_dynar_t elms = as->p_indexNetworkElm; + xbt_dynar_t elms = as->vertices_; int count = xbt_dynar_length(elms); xbt_dynar_t res = xbt_dynar_new(sizeof(sg_host_t), NULL); for (int index = 0; index < count; index++) { sg_netcard_t relm = xbt_dynar_get_as(elms, index, simgrid::surf::NetCard*); - sg_host_t delm = simgrid::s4u::Host::by_name_or_null(relm->getName()); + sg_host_t delm = simgrid::s4u::Host::by_name_or_null(relm->name()); if (delm!=NULL) { xbt_dynar_push(res, &delm); }