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);
namespace simgrid {
namespace surf {
-void AsGeneric::parseRoute(sg_platf_route_cbarg_t /*route*/){
- THROW_IMPOSSIBLE;
-}
-
-void AsGeneric::parseASroute(sg_platf_route_cbarg_t /*route*/){
- THROW_IMPOSSIBLE;
-}
-
-void AsGeneric::getRouteAndLatency(NetCard */*src*/, NetCard */*dst*/, sg_platf_route_cbarg_t /*into*/, double */*latency*/){
- THROW_IMPOSSIBLE;
-}
-
-AsGeneric::AsGeneric() {
- p_bypassRoutes = xbt_dict_new_homogeneous((void (*)(void *)) generic_free_route);
-}
-
-AsGeneric::~AsGeneric() {
- xbt_dict_free(&p_bypassRoutes);
-}
-
-int AsGeneric::parsePU(NetCard *elm)
+AsGeneric::AsGeneric(const char*name)
+ : AsNone(name)
{
- XBT_DEBUG("Load process unit \"%s\"", elm->getName());
- xbt_dynar_push_as(p_indexNetworkElm, NetCard*, elm);
- return xbt_dynar_length(p_indexNetworkElm)-1;
+ bypassRoutes_ = xbt_dict_new_homogeneous((void (*)(void *)) routing_route_free);
}
-int AsGeneric::parseAS(NetCard *elm)
+AsGeneric::~AsGeneric()
{
- XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName());
- xbt_dynar_push_as(p_indexNetworkElm, NetCard*, elm);
- return xbt_dynar_length(p_indexNetworkElm)-1;
+ xbt_dict_free(&bypassRoutes_);
}
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);
namespace simgrid {
namespace surf {
-xbt_dynar_t AsGeneric::getOneLinkRoutes() { // FIXME: kill that stub
- xbt_die("\"generic_get_onelink_routes\" not implemented yet");
- return NULL;
-}
-
void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
{
int src, dst;
- int table_size = xbt_dynar_length(p_indexNetworkElm);
+ int table_size = xbt_dynar_length(vertices_);
for (src = 0; src < table_size; src++) {
NetCard *my_src =
- xbt_dynar_get_as(p_indexNetworkElm, src, NetCard*);
+ xbt_dynar_get_as(vertices_, src, NetCard*);
for (dst = 0; dst < table_size; dst++) {
if (src == dst)
continue;
NetCard *my_dst =
- xbt_dynar_get_as(p_indexNetworkElm, dst, NetCard*);
+ xbt_dynar_get_as(vertices_, dst, NetCard*);
sg_platf_route_cbarg_t route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
route->link_list = xbt_dynar_new(sizeof(sg_routing_link_t), NULL);
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());
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();
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 */
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);
}
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);
}
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);
}
sg_platf_route_cbarg_t new_e_route = NULL;
if (e_route_bypass) {
- Link* link;
+ Link* link;
unsigned int cpt = 0;
new_e_route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
new_e_route->gw_src = e_route_bypass->gw_src;
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)->p_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_);
}
}