}
}
+static void parse_E_host(void)
+{
+ xbt_dict_cursor_t cursor = NULL;
+ char *key;
+ char *elem;
+
+ xbt_dict_foreach(current_property_set, cursor, key, elem) {
+ DEBUG2("property : %s = %s",key,elem);
+ }
+}
+
/*
* \brief Add a host to the network element list from XML
*/
{
parse_S_host(A_surfxml_host_id, A_surfxml_host_coordinates);
}
+static void parse_E_host_XML(void)
+{
+ parse_E_host();
+}
/*
* \brief Add a host to the network element list from lua script
info->rc_type = SURF_NETWORK_ELEMENT_ROUTER;
xbt_dict_set(global_routing->where_network_elements, A_surfxml_router_id,
(void *) info, xbt_free);
-#ifdef HAVE_TRACING
- TRACE_surf_host_declaration(A_surfxml_router_id, 0);
-#endif
if (strcmp(A_surfxml_router_coordinates,"")) {
xbt_dynar_t ctn = xbt_str_split_str(A_surfxml_router_coordinates, " ");
xbt_dynar_shrink(ctn,0);
/* parse generic elements */
surfxml_add_callback(STag_surfxml_host_cb_list, &parse_S_host_XML);
+ surfxml_add_callback(ETag_surfxml_host_cb_list, &parse_E_host_XML);
surfxml_add_callback(STag_surfxml_router_cb_list, &parse_S_router);
surfxml_add_callback(STag_surfxml_route_cb_list,
&routing_parse_Sconfig);
surfxml_add_callback(ETag_surfxml_config_cb_list,
&routing_parse_Econfig);
+
+#ifdef HAVE_TRACING
+ instr_routing_define_callbacks();
+#endif
}
/* ************************************************************************** */
int dst_id, route_extended_t e_route)
{
routing_component_dijkstra_t routing = (routing_component_dijkstra_t) rc;
-
+ DEBUG2("Load Route from \"%d\" to \"%d\"", src_id, dst_id);
xbt_node_t src = NULL;
xbt_node_t dst = NULL;
+
graph_node_map_element_t src_elm = (graph_node_map_element_t)
xbt_dict_get_or_null_ext(routing->graph_node_map,
(char *) (&src_id),
(char *) (&dst_id),
sizeof(int));
+
if (src_elm)
src = src_elm->node;
xbt_dynar_t nodes = NULL;
/* Create the topology graph */
+ if(!routing->route_graph)
routing->route_graph = xbt_graph_new_graph(1, NULL);
+ if(!routing->graph_node_map)
routing->graph_node_map = xbt_dict_new();
if (routing->cached && !routing->route_cache)
- routing->route_cache = xbt_dict_new();
+ routing->route_cache = xbt_dict_new();
/* Add the loopback if needed */
if (current_routing->hierarchy == SURF_ROUTING_BASE)
src_id = xbt_dict_get_or_null(rc->to_index, src);
dst_id = xbt_dict_get_or_null(rc->to_index, dst);
+ /* Create the topology graph */
+ if(!routing->route_graph)
+ routing->route_graph = xbt_graph_new_graph(1, NULL);
+ if(!routing->graph_node_map)
+ routing->graph_node_map = xbt_dict_new();
+
if (routing->cached && !routing->route_cache)
routing->route_cache = xbt_dict_new();
char *cluster_lat = A_surfxml_cluster_lat;
char *cluster_bb_bw = A_surfxml_cluster_bb_bw;
char *cluster_bb_lat = A_surfxml_cluster_bb_lat;
+ char *cluster_availability_file = A_surfxml_cluster_availability_file;
+ char *cluster_state_file = A_surfxml_cluster_state_file;
char *host_id, *groups, *link_id = NULL;
char *router_id, *link_router, *link_backbone;
+ char *availability_file = bprintf("%s",cluster_availability_file);
+ char *state_file = bprintf("%s",cluster_state_file);
+
+ xbt_dict_t patterns = xbt_dict_new();
+ xbt_dict_set(patterns,"id",cluster_id,NULL);
+ xbt_dict_set(patterns,"prefix",cluster_prefix,NULL);
+ xbt_dict_set(patterns,"suffix",cluster_suffix,NULL);
+
+
#ifdef HAVE_PCRE_LIB
char *route_src_dst;
#endif
#endif
link_id = bprintf("%s_link_%d", cluster_id, start);
- DEBUG2("<host\tid=\"%s\"\tpower=\"%s\"/>", host_id, cluster_power);
+ DEBUG2("<host\tid=\"%s\"\tpower=\"%s\">", host_id, cluster_power);
A_surfxml_host_state = A_surfxml_host_state_ON;
SURFXML_BUFFER_SET(host_id, host_id);
SURFXML_BUFFER_SET(host_power, cluster_power);
SURFXML_BUFFER_SET(host_core, cluster_core);
SURFXML_BUFFER_SET(host_availability, "1.0");
- SURFXML_BUFFER_SET(host_availability_file, "");
- SURFXML_BUFFER_SET(host_state_file, "");
+ xbt_dict_set(patterns,"radical",bprintf("%d",start),NULL);
+ availability_file = bprintf("%s",cluster_availability_file);
+ state_file = bprintf("%s",cluster_state_file);
+ DEBUG1("\tavailability_file=\"%s\"",xbt_str_varsubst(availability_file,patterns));
+ DEBUG1("\tstate_file=\"%s\"",xbt_str_varsubst(state_file,patterns));
+ SURFXML_BUFFER_SET(host_availability_file, xbt_str_varsubst(availability_file,patterns));
+ SURFXML_BUFFER_SET(host_state_file, xbt_str_varsubst(state_file,patterns));
+ DEBUG0("</host>");
SURFXML_START_TAG(host);
SURFXML_END_TAG(host);
surf_parse_get_int(&start,
xbt_dynar_get_as(radical_ends, 0, char *));
surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char *));
- DEBUG2("Create hosts and links from %d to %d", start, end);
for (i = start; i <= end; i++) {
host_id = bprintf("%s%d%s", cluster_prefix, i, cluster_suffix);
#ifndef HAVE_PCRE_LIB
#endif
link_id = bprintf("%s_link_%d", cluster_id, i);
- DEBUG2("<host\tid=\"%s\"\tpower=\"%s\"/>", host_id, cluster_power);
+ DEBUG2("<host\tid=\"%s\"\tpower=\"%s\"", host_id, cluster_power);
A_surfxml_host_state = A_surfxml_host_state_ON;
SURFXML_BUFFER_SET(host_id, host_id);
SURFXML_BUFFER_SET(host_power, cluster_power);
SURFXML_BUFFER_SET(host_core, cluster_core);
- SURFXML_BUFFER_SET(host_availability, "1.0");
- SURFXML_BUFFER_SET(host_availability_file, "");
- SURFXML_BUFFER_SET(host_state_file, "");
+ SURFXML_BUFFER_SET(host_availability, "1.0");
+ xbt_dict_set(patterns,"radical",bprintf("%d",i),NULL);
+ availability_file = bprintf("%s",cluster_availability_file);
+ state_file = bprintf("%s",cluster_state_file);
+ DEBUG1("\tavailability_file=\"%s\"",xbt_str_varsubst(availability_file,patterns));
+ DEBUG1("\tstate_file=\"%s\"",xbt_str_varsubst(state_file,patterns));
+ SURFXML_BUFFER_SET(host_availability_file, xbt_str_varsubst(availability_file,patterns));
+ SURFXML_BUFFER_SET(host_state_file, xbt_str_varsubst(state_file,patterns));
+ DEBUG0("</host>");
SURFXML_START_TAG(host);
SURFXML_END_TAG(host);
free(link_backbone);
free(link_router);
+ xbt_dict_free(&patterns);
+ free(availability_file);
+ free(state_file);
DEBUG0("</AS>");
SURFXML_END_TAG(AS);
char *peer_bw_out = A_surfxml_peer_bw_out;
char *peer_lat = A_surfxml_peer_lat;
char *peer_coord = A_surfxml_peer_coordinates;
+ char *peer_state_file = A_surfxml_peer_state_file;
+ char *peer_availability_file = A_surfxml_peer_availability_file;
char *host_id = NULL;
char *router_id, *link_router, *link_backbone, *link_id_up, *link_id_down;
SURFXML_BUFFER_SET(host_id, host_id);
SURFXML_BUFFER_SET(host_power, peer_power);
SURFXML_BUFFER_SET(host_availability, "1.0");
- SURFXML_BUFFER_SET(host_availability_file, "");
- SURFXML_BUFFER_SET(host_state_file, "");
+ SURFXML_BUFFER_SET(host_availability_file, peer_availability_file);
+ SURFXML_BUFFER_SET(host_state_file, peer_state_file);
SURFXML_START_TAG(host);
SURFXML_END_TAG(host);