Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
sanitize the way parsing callbacks of the routing submodule are registered
[simgrid.git] / src / surf / surf_routing.c
index 3014f7f..eaf46a2 100644 (file)
@@ -215,34 +215,25 @@ static void parse_S_bypassRoute_new_and_endpoints(void)
   link_list = xbt_dynar_new(sizeof(char *), &xbt_free_ref);
 }
 
-/**
- * \brief Set a new link on the actual list of link for a route or ASroute
- */
-static void parse_E_link_ctn_new_elem(const char *link_id)
-{
-  char *val;
-  val = xbt_strdup(link_id);
-  xbt_dynar_push(link_list, &val);
-}
-
 /**
  * \brief Set a new link on the actual list of link for a route or ASroute from XML
  */
 
-static void parse_E_link_ctn_new_elem_XML(void)
+static void routing_parse_link_ctn(void)
 {
-  if (A_surfxml_link_ctn_direction == A_surfxml_link_ctn_direction_NONE)
-    parse_E_link_ctn_new_elem(A_surfxml_link_ctn_id);
-  if (A_surfxml_link_ctn_direction == A_surfxml_link_ctn_direction_UP) {
-    char *link_id = bprintf("%s_UP", A_surfxml_link_ctn_id);
-    parse_E_link_ctn_new_elem(link_id);
-    free(link_id);
-  }
-  if (A_surfxml_link_ctn_direction == A_surfxml_link_ctn_direction_DOWN) {
-    char *link_id = bprintf("%s_DOWN", A_surfxml_link_ctn_id);
-    parse_E_link_ctn_new_elem(link_id);
-    free(link_id);
+  char *link_id;
+  switch (A_surfxml_link_ctn_direction) {
+  case AU_surfxml_link_ctn_direction:
+  case A_surfxml_link_ctn_direction_NONE:
+    link_id = xbt_strdup(A_surfxml_link_ctn_id);
+    break;
+  case A_surfxml_link_ctn_direction_UP:
+    link_id = bprintf("%s_UP", A_surfxml_link_ctn_id);
+    break;
+  case A_surfxml_link_ctn_direction_DOWN:
+    link_id = bprintf("%s_DOWN", A_surfxml_link_ctn_id);
   }
+  xbt_dynar_push(link_list,&link_id);
 }
 
 /**
@@ -844,11 +835,14 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_
   get_link_latency = get_link_latency_fun;
   /* no current routing at moment */
   current_routing = NULL;
+}
 
-  /* parse generic elements */
+void routing_register_callbacks() {
   sg_platf_host_add_cb(parse_S_host);
   sg_platf_router_add_cb(parse_S_router);
 
+  surfxml_add_callback(STag_surfxml_random_cb_list, &routing_parse_Srandom);
+
   surfxml_add_callback(STag_surfxml_route_cb_list,
       &parse_S_route_new_and_endpoints_XML);
   surfxml_add_callback(STag_surfxml_ASroute_cb_list,
@@ -856,8 +850,7 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_
   surfxml_add_callback(STag_surfxml_bypassRoute_cb_list,
       &parse_S_bypassRoute_new_and_endpoints);
 
-  surfxml_add_callback(ETag_surfxml_link_ctn_cb_list,
-      &parse_E_link_ctn_new_elem_XML);
+  surfxml_add_callback(ETag_surfxml_link_ctn_cb_list, &routing_parse_link_ctn);
 
   surfxml_add_callback(ETag_surfxml_route_cb_list,
       &parse_E_route_store_route);
@@ -877,12 +870,6 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_
 #endif
 }
 
-void surf_parse_add_callback_config(void)
-{
-  surfxml_add_callback(STag_surfxml_random_cb_list, &routing_parse_Srandom);
-}
-
-
 /* ************************************************** */
 /* ********** PATERN FOR NEW ROUTING **************** */