*/
static void parse_S_host_link(sg_platf_host_link_cbarg_t host)
{
- RoutingEdgePtr info = (RoutingEdgePtr) xbt_lib_get_or_null(host_lib, host->id, ROUTING_HOST_LEVEL);
+ RoutingEdgePtr info = static_cast<RoutingEdgePtr>(xbt_lib_get_or_null(host_lib, host->id, ROUTING_HOST_LEVEL));
xbt_assert(info, "Host '%s' not found!", host->id);
xbt_assert(current_routing->p_modelDesc == &routing_models[SURF_MODEL_CLUSTER] ||
current_routing->p_modelDesc == &routing_models[SURF_MODEL_VIVALDI],
{
xbt_assert(src && dst, "bad parameters for \"elements_father\" method");
#define ELEMENTS_FATHER_MAXDEPTH 16 /* increase if it is not enough */
- AS_t src_as, dst_as;
- AS_t path_src[ELEMENTS_FATHER_MAXDEPTH];
- AS_t path_dst[ELEMENTS_FATHER_MAXDEPTH];
+ AsPtr src_as, dst_as;
+ AsPtr path_src[ELEMENTS_FATHER_MAXDEPTH];
+ AsPtr path_dst[ELEMENTS_FATHER_MAXDEPTH];
int index_src = 0;
int index_dst = 0;
- AS_t current;
- AS_t current_src;
- AS_t current_dst;
- AS_t father;
+ AsPtr current;
+ AsPtr current_src;
+ AsPtr current_dst;
+ AsPtr father;
/* (1) find the as where the src and dst are located */
sg_routing_edge_t src_data = src;
/* Check whether a direct bypass is defined */
sg_platf_route_cbarg_t e_route_bypass = NULL;
//FIXME:REMOVE:if (common_father->get_bypass_route)
+
e_route_bypass = common_father->getBypassRoute(src, dst, latency);
/* Common ancestor is kind enough to declare a bypass route from src to dst -- use it and bail out */
"negative latency on route between \"%s\" and \"%s\"", src->p_name, dst->p_name);
}
-static xbt_dynar_t recursive_get_onelink_routes(AsPtr rc)
+xbt_dynar_t RoutingPlatf::getOneLinkRoutes(){
+ return recursiveGetOneLinkRoutes(p_root);
+}
+
+xbt_dynar_t RoutingPlatf::recursiveGetOneLinkRoutes(AsPtr rc)
{
xbt_dynar_t ret = xbt_dynar_new(sizeof(OnelinkPtr), xbt_free);
xbt_dict_cursor_t cursor = NULL;
AS_t rc_child;
xbt_dict_foreach(rc->p_routingSons, cursor, key, rc_child) {
- xbt_dynar_t onelink_child = recursive_get_onelink_routes(rc_child);
+ xbt_dynar_t onelink_child = recursiveGetOneLinkRoutes(rc_child);
if (onelink_child)
xbt_dynar_merge(&ret,&onelink_child);
}
return ret;
}
-static xbt_dynar_t get_onelink_routes(void)
-{
- return recursive_get_onelink_routes(routing_platf->p_root);
-}
-
e_surf_network_element_type_t routing_get_network_element_type(const char *name)
{
RoutingEdgePtr rc = sg_routing_edge_by_name_or_null(name);
/* config the uniq global routing */
routing_platf = new RoutingPlatf();
routing_platf->p_root = NULL;
- //FIXME:routing_platf->get_onelink_routes = get_onelink_routes;
- //FIXME:routing_platf->loopback = loopback;
+ routing_platf->p_loopback = loopback;
routing_platf->p_lastRoute = xbt_dynar_new(sizeof(sg_routing_link_t),NULL);
/* no current routing at moment */
current_routing = NULL;
void routing_cluster_add_backbone(void* bb) {
xbt_assert(current_routing->p_modelDesc == &routing_models[SURF_MODEL_CLUSTER],
"You have to be in model Cluster to use tag backbone!");
- /*FIXME:xbt_assert(!((as_cluster_t)current_routing)->p_backbone, "The backbone link is already defined!");
- ((as_cluster_t)current_routing)->p_backbone = bb;*/
- XBT_DEBUG("Add a backbone to AS '%s'",current_routing->p_name);
+ xbt_assert(!surf_as_cluster_get_backbone(current_routing), "The backbone link is already defined!");
+ surf_as_cluster_set_backbone(current_routing, bb);
+ XBT_DEBUG("Add a backbone to AS '%s'", current_routing->p_name);
}
static void routing_parse_cabinet(sg_platf_cabinet_cbarg_t cabinet)