X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/16bbb8a8212497d9c44c81333ed2c0e689e0c5af..b4fb9a399f454d51935b43901968f9dfa8ab6bd5:/src/surf/surf_routing_generic.cpp diff --git a/src/surf/surf_routing_generic.cpp b/src/surf/surf_routing_generic.cpp index a95b47ecb5..3e8a8d82c5 100644 --- a/src/surf/surf_routing_generic.cpp +++ b/src/surf/surf_routing_generic.cpp @@ -24,7 +24,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_routing_generic, surf_route, "Generic imple static int no_bypassroute_declared = 1; -void generic_free_route(sg_platf_route_cbarg_t route) +void routing_route_free(sg_platf_route_cbarg_t route) { if (route) { xbt_dynar_free(&route->link_list); @@ -47,12 +47,15 @@ void AsGeneric::getRouteAndLatency(NetCard */*src*/, NetCard */*dst*/, sg_platf_ THROW_IMPOSSIBLE; } -AsGeneric::AsGeneric() { - p_bypassRoutes = xbt_dict_new_homogeneous((void (*)(void *)) generic_free_route); +AsGeneric::AsGeneric(const char*name) + : AsNone(name) +{ + bypassRoutes_ = xbt_dict_new_homogeneous((void (*)(void *)) routing_route_free); } -AsGeneric::~AsGeneric() { - xbt_dict_free(&p_bypassRoutes); +AsGeneric::~AsGeneric() +{ + xbt_dict_free(&bypassRoutes_); } int AsGeneric::parsePU(NetCard *elm) @@ -78,7 +81,7 @@ void AsGeneric::parseBypassroute(sg_platf_route_cbarg_t e_route) XBT_DEBUG("Load bypassASroute from \"%s\" to \"%s\"", src, dst); else XBT_DEBUG("Load bypassRoute from \"%s\" to \"%s\"", src, dst); - xbt_dict_t dict_bypassRoutes = p_bypassRoutes; + xbt_dict_t dict_bypassRoutes = bypassRoutes_; char *route_name; route_name = bprintf("%s#%s", src, dst); @@ -229,7 +232,7 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src, return NULL; sg_platf_route_cbarg_t e_route_bypass = NULL; - xbt_dict_t dict_bypassRoutes = p_bypassRoutes; + xbt_dict_t dict_bypassRoutes = bypassRoutes_; if(dst->getRcComponent() == this && src->getRcComponent() == this ){ char *route_name = bprintf("%s#%s", src->getName(), dst->getName()); @@ -250,7 +253,7 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src, if (src == NULL || dst == NULL) xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"", src ? src->getName() : "(null)", - dst ? dst->getName() : "(null)", p_name); + dst ? dst->getName() : "(null)", name_); src_as = src->getRcComponent(); dst_as = dst->getRcComponent(); @@ -260,13 +263,13 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src, current = src_as; while (current != NULL) { xbt_dynar_push(path_src, ¤t); - current = current->p_routingFather; + current = current->father_; } path_dst = xbt_dynar_new(sizeof(As*), NULL); current = dst_as; while (current != NULL) { xbt_dynar_push(path_dst, ¤t); - current = current->p_routingFather; + current = current->father_; } /* (3) find the common father */ @@ -294,9 +297,9 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src, if (i <= max_index_src && max <= max_index_dst) { char *route_name = bprintf("%s#%s", (*(As **) - (xbt_dynar_get_ptr(path_src, i)))->p_name, + (xbt_dynar_get_ptr(path_src, i)))->name_, (*(As **) - (xbt_dynar_get_ptr(path_dst, max)))->p_name); + (xbt_dynar_get_ptr(path_dst, max)))->name_); e_route_bypass = (sg_platf_route_cbarg_t) xbt_dict_get_or_null(dict_bypassRoutes, route_name); xbt_free(route_name); } @@ -305,9 +308,9 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src, if (max <= max_index_src && i <= max_index_dst) { char *route_name = bprintf("%s#%s", (*(As **) - (xbt_dynar_get_ptr(path_src, max)))->p_name, + (xbt_dynar_get_ptr(path_src, max)))->name_, (*(As **) - (xbt_dynar_get_ptr(path_dst, i)))->p_name); + (xbt_dynar_get_ptr(path_dst, i)))->name_); e_route_bypass = (sg_platf_route_cbarg_t) xbt_dict_get_or_null(dict_bypassRoutes, route_name); xbt_free(route_name); } @@ -321,9 +324,9 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src, if (max <= max_index_src && max <= max_index_dst) { char *route_name = bprintf("%s#%s", (*(As **) - (xbt_dynar_get_ptr(path_src, max)))->p_name, + (xbt_dynar_get_ptr(path_src, max)))->name_, (*(As **) - (xbt_dynar_get_ptr(path_dst, max)))->p_name); + (xbt_dynar_get_ptr(path_dst, max)))->name_); e_route_bypass = (sg_platf_route_cbarg_t) xbt_dict_get_or_null(dict_bypassRoutes, route_name); xbt_free(route_name); } @@ -396,84 +399,30 @@ sg_platf_route_cbarg_t AsGeneric::newExtendedRoute(e_surf_routing_hierarchy_t hi return result; } - - -As *AsGeneric::asExist(As *to_find) -{ - //return to_find; // FIXME: BYPASSERROR OF FOREACH WITH BREAK - xbt_dict_cursor_t cursor = NULL; - char *key; - int found = 0; - AsGeneric *elem; - xbt_dict_foreach(p_routingSons, cursor, key, elem) { - if (to_find == elem || elem->asExist(to_find)) { - found = 1; - break; - } - } - if (found) - return to_find; - return NULL; -} - -As *AsGeneric::autonomousSystemExist(char *element) -{ - //return rc; // FIXME: BYPASSERROR OF FOREACH WITH BREAK - As *element_as, *result, *elem; - xbt_dict_cursor_t cursor = NULL; - char *key; - element_as = ((NetCard*) - xbt_lib_get_or_null(as_router_lib, element, - ROUTING_ASR_LEVEL))->getRcComponent(); - result = ((As*) - 1); - if (element_as != this) - result = asExist(element_as); - - int found = 0; - if (result) { - xbt_dict_foreach(element_as->p_routingSons, cursor, key, elem) { - found = !strcmp(elem->p_name, element); - if (found) - break; - } - if (found) - return element_as; - } - return NULL; -} - -As *AsGeneric::processingUnitsExist(char *element) -{ - As *element_as = sg_host_by_name(element)->pimpl_netcard ->getRcComponent(); - if (element_as == this) - return element_as; - return asExist(element_as); -} - void AsGeneric::srcDstCheck(NetCard *src, NetCard *dst) { if (src == NULL || dst == NULL) xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"", src ? src->getName() : "(null)", dst ? dst->getName() : "(null)", - p_name); + name_); As *src_as = src->getRcComponent(); As *dst_as = dst->getRcComponent(); if (src_as != dst_as) xbt_die("The src(%s in %s) and dst(%s in %s) are in differents AS", - src->getName(), src_as->p_name, - dst->getName(), dst_as->p_name); + src->getName(), src_as->name_, + dst->getName(), dst_as->name_); if (this != dst_as) xbt_die ("The routing component of src'%s' and dst'%s' is not the same as the network elements belong (%s?=%s?=%s)", src->getName(), dst->getName(), - src_as->p_name, - dst_as->p_name, - p_name); + src_as->name_, + dst_as->name_, + name_); } }