Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
give a default value at field declaration, not everywhere in subclasses
[simgrid.git] / src / surf / surf_interface.cpp
index adf270b..5abc5ca 100644 (file)
@@ -38,7 +38,7 @@ xbt_dict_t watched_hosts_lib;
 namespace simgrid {
 namespace surf {
 
-surf_callback(void, void) surfExitCallbacks;
+simgrid::surf::signal<void(void)> surfExitCallbacks;
 
 }
 }
@@ -269,11 +269,6 @@ static XBT_INLINE void routing_asr_prop_free(void *p)
   //xbt_dict_free(&elm); FIXME: leaking in some case? That's a sometimes double-free with AsCluster::~AsCluster
 }
 
-static XBT_INLINE void surf_host_free(void *r)
-{
-  delete static_cast<simgrid::surf::Host*>(r);
-}
-
 static XBT_INLINE void surf_storage_free(void *r)
 {
   delete static_cast<simgrid::surf::Storage*>(r);
@@ -306,7 +301,9 @@ void sg_version(int *ver_major,int *ver_minor,int *ver_patch) {
 void surf_init(int *argc, char **argv)
 {
   XBT_DEBUG("Create all Libs");
-  host_lib = xbt_lib_new();
+  host_list = xbt_dict_new_homogeneous([](void*p) {
+    delete static_cast<simgrid::Host*>(p);
+  });
   as_router_lib = xbt_lib_new();
   storage_lib = xbt_lib_new();
   storage_type_lib = xbt_lib_new();
@@ -319,7 +316,7 @@ void surf_init(int *argc, char **argv)
   ROUTING_PROP_ASR_LEVEL = xbt_lib_add_level(as_router_lib,routing_asr_prop_free);
 
   XBT_DEBUG("Add SURF levels");
-  SURF_HOST_LEVEL = xbt_lib_add_level(host_lib,surf_host_free);
+  simgrid::surf::Host::classInit();
   SURF_STORAGE_LEVEL = xbt_lib_add_level(storage_lib,surf_storage_free);
 
   xbt_init(argc, argv);
@@ -352,7 +349,7 @@ void surf_exit(void)
   xbt_dynar_free(&host_that_restart);
   xbt_dynar_free(&surf_path);
 
-  xbt_lib_free(&host_lib);
+  xbt_dict_free(&host_list);
   xbt_lib_free(&as_router_lib);
   xbt_lib_free(&storage_lib);
   sg_link_exit();
@@ -366,7 +363,7 @@ void surf_exit(void)
   xbt_dynar_free(&model_list_invoke);
   routing_exit();
 
-  surf_callback_emit(simgrid::surf::surfExitCallbacks);
+  simgrid::surf::surfExitCallbacks();
 
   if (maxmin_system) {
     lmm_system_free(maxmin_system);
@@ -594,32 +591,32 @@ namespace simgrid {
 namespace surf {
 
 Resource::Resource()
-: p_name(NULL), p_properties(NULL), p_model(NULL)
+: p_name(NULL), p_model(NULL)
 {}
 
-Resource::Resource(Model *model, const char *name, xbt_dict_t props)
-  : Resource(model, name, props, SURF_RESOURCE_ON)
+Resource::Resource(Model *model, const char *name)
+  : Resource(model, name, SURF_RESOURCE_ON)
 {}
 
-Resource::Resource(Model *model, const char *name, xbt_dict_t props, lmm_constraint_t constraint)
-  : Resource(model, name, props, constraint, SURF_RESOURCE_ON)
+Resource::Resource(Model *model, const char *name, lmm_constraint_t constraint)
+  : Resource(model, name, constraint, SURF_RESOURCE_ON)
 {}
   
 Resource::Resource(
-  Model *model, const char *name, xbt_dict_t props,
+  Model *model, const char *name,
   lmm_constraint_t constraint, e_surf_resource_state_t stateInit)
-  : p_name(xbt_strdup(name)), p_properties(props), p_model(model)
+  : p_name(xbt_strdup(name)), p_model(model)
   , m_running(true), m_stateCurrent(stateInit), p_constraint(constraint)
 {}
 
-Resource::Resource(Model *model, const char *name, xbt_dict_t props, e_surf_resource_state_t stateInit)
-  : p_name(xbt_strdup(name)), p_properties(props), p_model(model)
+Resource::Resource(Model *model, const char *name, e_surf_resource_state_t stateInit)
+  : p_name(xbt_strdup(name)), p_model(model)
   , m_running(true), m_stateCurrent(stateInit)
 {}
 
+
 Resource::~Resource() {
   xbt_free((void*)p_name);
-  xbt_dict_free(&p_properties);
 }
 
 e_surf_resource_state_t Resource::getState()
@@ -659,12 +656,6 @@ const char *Resource::getName() {
   return p_name;
 }
 
-xbt_dict_t Resource::getProperties() {
-  if (p_properties==NULL)
-    p_properties = xbt_dict_new();
-  return p_properties;
-}
-
 lmm_constraint_t Resource::getConstraint() {
   return p_constraint;
 }
@@ -708,7 +699,6 @@ void Action::initialize(simgrid::surf::Model *model, double cost, bool failed,
   p_variable = var;
   m_lastValue = 0;
   m_lastUpdate = 0;
-  m_suspended = false;
   m_hat = NOTSET;
   p_category = NULL;
   p_stateHookup.prev = 0;