Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add V_cluster_availability_file and V_cluster_state_file to struct for cluster.
[simgrid.git] / src / surf / surfxml_parse.c
index 6337923..1515934 100644 (file)
@@ -314,17 +314,13 @@ void STag_surfxml_host(void){
 
        surfxml_call_cb_functions(STag_surfxml_host_cb_list);
 }
+void STag_surfxml_host_cluster(void){
+       surfxml_call_cb_functions(STag_surfxml_host_cb_list);
+}
 void ETag_surfxml_host(void){
        surfxml_call_cb_functions(ETag_surfxml_host_cb_list);
-       //xbt_free(struct_host->V_host_id);
-       struct_host->V_host_power_peak = 0.0;
-       struct_host->V_host_core = 0;
-       struct_host->V_host_power_scale = 0.0;
-       struct_host->V_host_state_initial = SURF_RESOURCE_ON;
-       struct_host->V_host_power_trace = NULL;
-       struct_host->V_host_state_trace = NULL;
-       xbt_free(struct_host->V_host_coord);
-       //xbt_free(host);
+       xbt_free(struct_host->V_host_id);
+       xbt_free(struct_host);
 }
 
 void STag_surfxml_router(void){
@@ -348,12 +344,14 @@ void STag_surfxml_cluster(void){
        struct_cluster->V_cluster_prefix = xbt_strdup(A_surfxml_cluster_prefix);
        struct_cluster->V_cluster_suffix = xbt_strdup(A_surfxml_cluster_suffix);
        struct_cluster->V_cluster_radical = xbt_strdup(A_surfxml_cluster_radical);
-       struct_cluster->S_cluster_power = xbt_strdup(A_surfxml_cluster_power);
-       struct_cluster->S_cluster_core = xbt_strdup(A_surfxml_cluster_core);
-       struct_cluster->S_cluster_bw = xbt_strdup(A_surfxml_cluster_bw);
-       struct_cluster->S_cluster_lat = xbt_strdup(A_surfxml_cluster_lat);
-       struct_cluster->S_cluster_bb_bw = xbt_strdup(A_surfxml_cluster_bb_bw);
-       struct_cluster->S_cluster_bb_lat = xbt_strdup(A_surfxml_cluster_bb_lat);
+       surf_parse_get_double(&struct_cluster->S_cluster_power,A_surfxml_cluster_power);
+       surf_parse_get_int(&struct_cluster->S_cluster_core,A_surfxml_cluster_core);
+       surf_parse_get_double(&struct_cluster->S_cluster_bw,A_surfxml_cluster_bw);
+       surf_parse_get_double(&struct_cluster->S_cluster_lat,A_surfxml_cluster_lat);
+       if(strcmp(A_surfxml_cluster_bb_bw,""))
+               surf_parse_get_double(&struct_cluster->S_cluster_bb_bw,A_surfxml_cluster_bb_bw);
+       if(strcmp(A_surfxml_cluster_bb_lat,""))
+               surf_parse_get_double(&struct_cluster->S_cluster_bb_lat,A_surfxml_cluster_bb_lat);
        if(!strcmp(A_surfxml_cluster_router_id,""))
                struct_cluster->S_cluster_router_id = bprintf("%s%s_router%s",
                                struct_cluster->V_cluster_prefix,
@@ -365,6 +363,9 @@ void STag_surfxml_cluster(void){
        struct_cluster->V_cluster_sharing_policy = AX_surfxml_cluster_sharing_policy;
        struct_cluster->V_cluster_bb_sharing_policy = AX_surfxml_cluster_bb_sharing_policy;
 
+       struct_cluster->V_cluster_availability_file = xbt_strdup(A_surfxml_cluster_availability_file);
+       struct_cluster->V_cluster_state_file = xbt_strdup(A_surfxml_cluster_state_file);
+
        surfxml_call_cb_functions(STag_surfxml_cluster_cb_list);
 }
 void ETag_surfxml_cluster(void){
@@ -373,15 +374,9 @@ void ETag_surfxml_cluster(void){
        xbt_free(struct_cluster->V_cluster_prefix);
        xbt_free(struct_cluster->V_cluster_suffix);
        xbt_free(struct_cluster->V_cluster_radical);
-       xbt_free(struct_cluster->S_cluster_power);
-       xbt_free(struct_cluster->S_cluster_core);
-       xbt_free(struct_cluster->S_cluster_bw);
-       xbt_free(struct_cluster->S_cluster_lat);
-       xbt_free(struct_cluster->S_cluster_bb_bw);
-       xbt_free(struct_cluster->S_cluster_bb_lat);
        xbt_free(struct_cluster->S_cluster_router_id);
-       struct_cluster->V_cluster_sharing_policy = 0;
-       struct_cluster->V_cluster_bb_sharing_policy = 0;
+       xbt_free(struct_cluster->V_cluster_availability_file);
+       xbt_free(struct_cluster->V_cluster_state_file);
        xbt_free(struct_cluster);
 }
 
@@ -437,19 +432,14 @@ void STag_surfxml_link(void){
                 struct_lnk->V_policy_initial_link = SURF_LINK_FULLDUPLEX;
        }
 
-
+       surfxml_call_cb_functions(STag_surfxml_link_cb_list);
+}
+void STag_surfxml_link_cluster(void){
        surfxml_call_cb_functions(STag_surfxml_link_cb_list);
 }
 void ETag_surfxml_link(void){
        surfxml_call_cb_functions(ETag_surfxml_link_cb_list);
        xbt_free(struct_lnk->V_link_id);
-       struct_lnk->V_link_bandwidth = 0;
-       struct_lnk->V_link_bandwidth_file = NULL;
-       struct_lnk->V_link_latency = 0;
-       struct_lnk->V_link_latency_file = NULL;
-       struct_lnk->V_link_state = SURF_RESOURCE_ON;
-       struct_lnk->V_link_state_file = NULL;
-       struct_lnk->V_link_sharing_policy = 0;
        xbt_free(struct_lnk);
 }
 
@@ -475,6 +465,8 @@ void STag_surfxml_trace_connect(void){
        surfxml_call_cb_functions(STag_surfxml_trace_connect_cb_list);
 }
 void STag_surfxml_AS(void){
+  surf_parse_models_setup(); /* ensure that the models are created after the last <config> tag. See comment in simgrid.dtd */
+
        surfxml_call_cb_functions(STag_surfxml_AS_cb_list);
 }
 void STag_surfxml_ASroute(void){