Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
another leak dies
[simgrid.git] / src / surf / sg_platf.cpp
index 8cfb69d..1f6a856 100644 (file)
@@ -151,7 +151,15 @@ void sg_platf_new_host(sg_platf_host_cbarg_t host)
     cpu->setStateTrace(host->state_trace);
   if (host->speed_trace)
     cpu->setSpeedTrace(host->speed_trace);
     cpu->setStateTrace(host->state_trace);
   if (host->speed_trace)
     cpu->setSpeedTrace(host->speed_trace);
-  surf_host_model->createHost(host->id, netcard, cpu, host->properties)->attach(h);
+  surf_host_model->createHost(host->id, netcard, cpu)->attach(h);
+
+  if (host->properties) {
+    xbt_dict_cursor_t cursor=NULL;
+    char *key,*data;
+    xbt_dict_foreach(host->properties,cursor,key,data)
+      h->setProperty(key,data);
+    xbt_dict_free(&host->properties);
+  }
 
   if (host->pstate != 0)
     cpu->setPState(host->pstate);
 
   if (host->pstate != 0)
     cpu->setPState(host->pstate);
@@ -346,6 +354,7 @@ void sg_platf_new_cluster(sg_platf_cluster_cbarg_t cluster)
     xbt_free(host_id);
     rankId++;
   }
     xbt_free(host_id);
     rankId++;
   }
+  delete radicals;
 
   // Add a router. It is magically used thanks to the way in which surf_routing_cluster is written,
   // and it's very useful to connect clusters together
 
   // Add a router. It is magically used thanks to the way in which surf_routing_cluster is written,
   // and it's very useful to connect clusters together
@@ -718,22 +727,22 @@ static void surf_config_models_setup()
   int storage_id = -1;
   char *storage_model_name = NULL;
 
   int storage_id = -1;
   char *storage_model_name = NULL;
 
-  host_model_name = xbt_cfg_get_string(_sg_cfg_set, "host/model");
-  vm_model_name = xbt_cfg_get_string(_sg_cfg_set, "vm/model");
-  network_model_name = xbt_cfg_get_string(_sg_cfg_set, "network/model");
-  cpu_model_name = xbt_cfg_get_string(_sg_cfg_set, "cpu/model");
-  storage_model_name = xbt_cfg_get_string(_sg_cfg_set, "storage/model");
+  host_model_name    = xbt_cfg_get_string("host/model");
+  vm_model_name      = xbt_cfg_get_string("vm/model");
+  network_model_name = xbt_cfg_get_string("network/model");
+  cpu_model_name     = xbt_cfg_get_string("cpu/model");
+  storage_model_name = xbt_cfg_get_string("storage/model");
 
   /* Check whether we use a net/cpu model differing from the default ones, in which case
    * we should switch to the "compound" host model to correctly dispatch stuff to
    * the right net/cpu models.
    */
 
 
   /* Check whether we use a net/cpu model differing from the default ones, in which case
    * we should switch to the "compound" host model to correctly dispatch stuff to
    * the right net/cpu models.
    */
 
-  if ((!xbt_cfg_is_default_value(_sg_cfg_set, "network/model") ||
-       !xbt_cfg_is_default_value(_sg_cfg_set, "cpu/model")) &&
-      xbt_cfg_is_default_value(_sg_cfg_set, "host/model")) {
+  if ((!xbt_cfg_is_default_value("network/model") ||
+       !xbt_cfg_is_default_value("cpu/model")) &&
+      xbt_cfg_is_default_value("host/model")) {
     host_model_name = "compound";
     host_model_name = "compound";
-    xbt_cfg_set_string(_sg_cfg_set, "host/model", host_model_name);
+    xbt_cfg_set_string("host/model", host_model_name);
   }
 
   XBT_DEBUG("host model: %s", host_model_name);
   }
 
   XBT_DEBUG("host model: %s", host_model_name);
@@ -788,7 +797,7 @@ static void surf_config_models_setup()
  * @param AS_id name of this autonomous system. Must be unique in the platform
  * @param wanted_routing_type one of Full, Floyd, Dijkstra or similar. Full list in the variable routing_models, in src/surf/surf_routing.c
  */
  * @param AS_id name of this autonomous system. Must be unique in the platform
  * @param wanted_routing_type one of Full, Floyd, Dijkstra or similar. Full list in the variable routing_models, in src/surf/surf_routing.c
  */
-void sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS)
+simgrid::s4u::As * sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS)
 {
   if (!surf_parse_models_setup_already_called) {
     /* Initialize the surf models. That must be done after we got all config, and before we need the models.
 {
   if (!surf_parse_models_setup_already_called) {
     /* Initialize the surf models. That must be done after we got all config, and before we need the models.
@@ -854,6 +863,8 @@ void sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS)
   simgrid::surf::asCreatedCallbacks(new_as);
   if (TRACE_is_enabled())
     sg_instr_AS_begin(AS);
   simgrid::surf::asCreatedCallbacks(new_as);
   if (TRACE_is_enabled())
     sg_instr_AS_begin(AS);
+
+  return new_as;
 }
 
 /**
 }
 
 /**