Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Bugfix: the dependence relation between isend/irecv and "wait timeout" is not symetrical.
[simgrid.git] / src / surf / surf_routing.c
index 0c874c8..6881132 100644 (file)
@@ -18,6 +18,7 @@
 #include "xbt/config.h"
 #include "xbt/graph.h"
 #include "xbt/set.h"
+#include "surf/surfxml_parse.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf");
 
@@ -1053,7 +1054,6 @@ static e_surf_network_element_type_t get_network_element_type(const char
  */
 void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_t get_link_latency_fun)
 {
-
   /* config the uniq global routing */
   global_routing = xbt_new0(s_routing_global_t, 1);
   global_routing->where_network_elements = xbt_dict_new();
@@ -1104,16 +1104,26 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_
   surfxml_add_callback(STag_surfxml_peer_cb_list,
                          &routing_parse_Speer);
 
-  surfxml_add_callback(STag_surfxml_config_cb_list,
-                                          &routing_parse_Sconfig);
-  surfxml_add_callback(ETag_surfxml_config_cb_list,
-                                          &routing_parse_Econfig);
-
 #ifdef HAVE_TRACING
   instr_routing_define_callbacks();
 #endif
 }
 
+void surf_parse_add_callback_config(void)
+{
+       surfxml_add_callback(STag_surfxml_config_cb_list, &routing_parse_Sconfig);
+       surfxml_add_callback(ETag_surfxml_config_cb_list, &routing_parse_Econfig);
+       surfxml_add_callback(STag_surfxml_prop_cb_list, &parse_properties);
+       surfxml_add_callback(STag_surfxml_AS_cb_list, &surf_parse_models_setup);
+}
+
+void surf_parse_models_setup()
+{
+       surfxml_del_callback(STag_surfxml_AS_cb_list, surf_parse_models_setup);
+       surf_config_models_setup(platform_filename);
+       free(platform_filename);
+}
+
 /* ************************************************************************** */
 /* *************************** FULL ROUTING ********************************* */
 
@@ -3243,20 +3253,23 @@ static void generic_src_dst_check(routing_component_t rc, const char *src,
 
 static void routing_parse_Sconfig(void)
 {
-  //TODO
-  DEBUG0("WARNING tag config not yet implemented.");
-  DEBUG1("Configuration name = %s",A_surfxml_config_id);
+  DEBUG1("START configuration name = %s",A_surfxml_config_id);
 }
 
 static void routing_parse_Econfig(void)
 {
-  //TODO
   xbt_dict_cursor_t cursor = NULL;
   char *key;
   char *elem;
+  char *cfg;
   xbt_dict_foreach(current_property_set, cursor, key, elem) {
-         DEBUG2("property : %s = %s",key,elem);
+         cfg = bprintf("%s:%s",key,elem);
+         if(xbt_cfg_is_default_value(_surf_cfg_set, key))
+                 xbt_cfg_set_parse(_surf_cfg_set, cfg);
+         else
+                 INFO1("The custom configuration '%s' is already define by user!",key);
        }
+  DEBUG1("End configuration name = %s",A_surfxml_config_id);
 }
 
 static void routing_parse_Scluster(void)