Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Test if the configuration into tag_config is already set by command line.
[simgrid.git] / src / surf / surf_routing.c
index 4b4858a..b053b28 100644 (file)
@@ -1053,7 +1053,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)
 {
  */
 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();
   /* config the uniq global routing */
   global_routing = xbt_new0(s_routing_global_t, 1);
   global_routing->where_network_elements = xbt_dict_new();
@@ -1104,16 +1103,19 @@ 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_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
 }
 
 #ifdef HAVE_TRACING
   instr_routing_define_callbacks();
 #endif
 }
 
+void surf_config_add_callback(void)
+{
+       surf_parse_reset_parser();
+       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);
+}
+
 /* ************************************************************************** */
 /* *************************** FULL ROUTING ********************************* */
 
 /* ************************************************************************** */
 /* *************************** FULL ROUTING ********************************* */
 
@@ -3243,20 +3245,25 @@ static void generic_src_dst_check(routing_component_t rc, const char *src,
 
 static void routing_parse_Sconfig(void)
 {
 
 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)
 {
 }
 
 static void routing_parse_Econfig(void)
 {
-  //TODO
   xbt_dict_cursor_t cursor = NULL;
   xbt_dict_cursor_t cursor = NULL;
+  xbt_cfgelm_t variable;
   char *key;
   char *elem;
   char *key;
   char *elem;
+  char *cfg;
   xbt_dict_foreach(current_property_set, cursor, key, elem) {
   xbt_dict_foreach(current_property_set, cursor, key, elem) {
-         DEBUG2("property : %s = %s",key,elem);
+         cfg = bprintf("%s:%s",key,elem);
+         variable = xbt_cfgelm_get(_surf_cfg_set, key, xbt_cfgelm_any);
+         if(variable->isdefault)
+                 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)
 }
 
 static void routing_parse_Scluster(void)
@@ -3455,7 +3462,7 @@ static void routing_parse_Scluster(void)
   SURFXML_START_TAG(link);
   SURFXML_END_TAG(link);
 
   SURFXML_START_TAG(link);
   SURFXML_END_TAG(link);
 
-  DEBUG3("<link\tid=\"%s\" bw=\"%s\" lat=\"%s\"/>", link_backbone,cluster_bw, cluster_lat);
+  DEBUG3("<link\tid=\"%s\" bw=\"%s\" lat=\"%s\"/>", link_backbone,cluster_bb_bw, cluster_bb_lat);
   A_surfxml_link_state = A_surfxml_link_state_ON;
   A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
   if(cluster_bb_sharing_policy == A_surfxml_cluster_bb_sharing_policy_FATPIPE)
   A_surfxml_link_state = A_surfxml_link_state_ON;
   A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
   if(cluster_bb_sharing_policy == A_surfxml_cluster_bb_sharing_policy_FATPIPE)