X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2c1cf331f7be1c55098faf7ba7a542149576614c..ce3bec73b984f5d517033220533448d4bbb6d809:/src/surf/surfxml_parseplatf.cpp diff --git a/src/surf/surfxml_parseplatf.cpp b/src/surf/surfxml_parseplatf.cpp index ab301e372d..63df75bb5e 100644 --- a/src/surf/surfxml_parseplatf.cpp +++ b/src/surf/surfxml_parseplatf.cpp @@ -9,16 +9,18 @@ #include "xbt/str.h" #include "xbt/dict.h" #include "simgrid/platf.h" -#include "surf/surfxml_parse.h" #include "src/surf/cpu_interface.hpp" #include "src/surf/surf_private.h" +#include "src/surf/surfxml_private.h" #ifdef HAVE_LUA +extern "C" { #include "src/bindings/lua/simgrid_lua.h" #include /* Always include this when calling Lua */ #include /* Always include this when calling Lua */ #include /* Prototype for luaL_openlibs(), */ +} #endif XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_parse); @@ -68,12 +70,51 @@ xbt_dict_t trace_connect_list_link_avail = NULL; xbt_dict_t trace_connect_list_link_bw = NULL; xbt_dict_t trace_connect_list_link_lat = NULL; +void sg_platf_trace_connect(sg_platf_trace_connect_cbarg_t trace_connect) +{ + xbt_assert(xbt_dict_get_or_null(traces_set_list, trace_connect->trace), + "Cannot connect trace %s to %s: trace unknown", + trace_connect->trace, + trace_connect->element); + + switch (trace_connect->kind) { + case SURF_TRACE_CONNECT_KIND_HOST_AVAIL: + xbt_dict_set(trace_connect_list_host_avail, + trace_connect->trace, + xbt_strdup(trace_connect->element), NULL); + break; + case SURF_TRACE_CONNECT_KIND_POWER: + xbt_dict_set(trace_connect_list_host_speed, trace_connect->trace, + xbt_strdup(trace_connect->element), NULL); + break; + case SURF_TRACE_CONNECT_KIND_LINK_AVAIL: + xbt_dict_set(trace_connect_list_link_avail, + trace_connect->trace, + xbt_strdup(trace_connect->element), NULL); + break; + case SURF_TRACE_CONNECT_KIND_BANDWIDTH: + xbt_dict_set(trace_connect_list_link_bw, + trace_connect->trace, + xbt_strdup(trace_connect->element), NULL); + break; + case SURF_TRACE_CONNECT_KIND_LATENCY: + xbt_dict_set(trace_connect_list_link_lat, trace_connect->trace, + xbt_strdup(trace_connect->element), NULL); + break; + default: + surf_parse_error("Cannot connect trace %s to %s: kind of trace unknown", + trace_connect->trace, trace_connect->element); + break; + } +} + + /* ***************************************** */ static int after_config_done; void parse_after_config() { if (!after_config_done) { - TRACE_start(); + TRACE_start(); /* Register classical callbacks */ storage_register_callbacks(); @@ -158,7 +199,6 @@ void parse_platform_file(const char *file) xbt_dict_free(&trace_connect_list_link_bw); xbt_dict_free(&trace_connect_list_link_lat); xbt_dict_free(&traces_set_list); - xbt_dict_free(&random_data_list); xbt_dynar_free(&surfxml_bufferstack_stack); surf_parse_close();