XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_gtnets, surf,
"Logging specific to the SURF network GTNetS module");
-//extern routing_t used_routing; // COMMENTED BY DAVID
-extern routing_global_t global_routing; // ADDED BY DAVID
+extern routing_global_t global_routing;
double sg_gtnets_jitter=0.0;
int sg_gtnets_jitter_seed=10;
/* Create the gtnets topology based on routing strategy */
static void create_gtnets_topology()
{
- xbt_dict_cursor_t cursor = NULL;
- char *key, *data;
-
-// COMMENTED BY DAVID
-// xbt_dict_t onelink_routes = used_routing->get_onelink_routes();
+// xbt_dict_cursor_t cursor = NULL;
+// char *key, *data;
+// xbt_dict_t onelink_routes = global_routing->get_onelink_routes();
// xbt_assert0(onelink_routes, "Error onelink_routes was not initialized");
-//
+//
// DEBUG0("Starting topology generation");
-//
+// À refaire plus tard. Il faut prendre la liste des hôtes/routeurs (dans routing)
+// À partir de cette liste, on les numérote.
+// Ensuite, on peut utiliser les id pour refaire les appels GTNets qui suivent.
+
// xbt_dict_foreach(onelink_routes, cursor, key, data){
// s_onelink_t link = (s_onelink_t) data;
-//
-// DEBUG3("Link (#%d), src (#%d), dst (#%d)", ((network_link_GTNETS_t)(link->link_ptr))->id , link->src_id, link->dst_id);
+//
+// DEBUG3("Link (#%d), src (#%s), dst (#%s)", ((network_link_GTNETS_t)(link->link_ptr))->id , link->src, link->dst);
// DEBUG0("Calling one link route");
-// if(used_routing->is_router(link->src_id)){
+// if(global_routing->is_router(link->src)){
// gtnets_add_router(link->src_id);
// }
-// if(used_routing->is_router(link->dst_id)){
+// if(global_routing->is_router(link->dst)){
// gtnets_add_router(link->dst_id);
// }
// route_onehop_new(link->src_id, link->dst_id, (network_link_GTNETS_t)(link->link_ptr));
// }
-//
+//
// xbt_dict_free(&route_table);
// if (XBT_LOG_ISENABLED(surf_network_gtnets, xbt_log_priority_debug)) {
// gtnets_print_topology();
// }
-
}
/* Main XML parsing */
action->refcount--;
if (!action->refcount) {
xbt_swag_remove(action, action->state_set);
+#ifdef HAVE_TRACING
+ if (action->category) xbt_free (action->category);
+#endif
free(action);
return 1;
}
/* Max durations are not supported */
static surf_action_t communicate(const char *src_name, const char *dst_name,
- int src, int dst, double size, double rate)
+ double size, double rate)
{
+ int src,dst;
+
+ // Utiliser le dictionnaire définit dans create_gtnets_topology pour initialiser correctement src et dst
+ src=dst=-1;
surf_action_network_GTNETS_t action = NULL;
xbt_assert0((src >= 0 && dst >= 0), "Either src or dst have invalid id (id<0)");
DEBUG4("Setting flow src %d \"%s\", dst %d \"%s\"", src, src_name, dst, dst_name);
- //xbt_dynar_t links = used_routing->get_route(src, dst); // COMMENTED BY DAVID
- xbt_dynar_t links = global_routing->get_route(src_name, dst_name); // ADDED BY DAVID
+ xbt_dynar_t links = global_routing->get_route(src_name, dst_name);
route_new(src, dst, links, xbt_dynar_length(links));
action = surf_action_new(sizeof(s_surf_action_network_GTNETS_t), size, surf_network_model, 0);
routing_model_create(sizeof(network_link_GTNETS_t), NULL);
}
+#ifdef HAVE_LATENCY_BOUND_TRACKING
static int get_latency_limited(surf_action_t action){
return 0;
}
+#endif
#ifdef HAVE_GTNETS
void surf_network_model_init_GTNETS(const char *filename)
define_callbacks(filename);
xbt_dynar_push(model_list, &surf_network_model);
+#ifdef HAVE_LATENCY_BOUND_TRACKING
surf_network_model->get_latency_limited = get_latency_limited;
+#endif
if(sg_gtnets_jitter > 0.0){
gtnets_set_jitter(sg_gtnets_jitter);