Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Kill the surf::Host subclasses (surf::HostModel remain subclassed)
[simgrid.git] / src / surf / surf_routing.cpp
index d71fe5d..dbc30ef 100644 (file)
@@ -23,8 +23,8 @@
 namespace simgrid {
 namespace surf {
 
-surf_callback(void, simgrid::surf::RoutingEdge*) routingEdgeCreatedCallbacks;
-surf_callback(void, simgrid::surf::As*) asCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::RoutingEdge*)> routingEdgeCreatedCallbacks;
+simgrid::surf::signal<void(simgrid::surf::As*)> asCreatedCallbacks;
 
 }
 }
@@ -33,7 +33,7 @@ surf_callback(void, simgrid::surf::As*) asCreatedCallbacks;
  * @ingroup SURF_build_api
  * @brief A library containing all known hosts
  */
-xbt_lib_t host_lib;
+xbt_dict_t host_list;
 
 int SURF_HOST_LEVEL;            //Surf host level
 int COORD_HOST_LEVEL=0;         //Coordinates level
@@ -172,7 +172,8 @@ simgrid::surf::RoutingEdge *routing_add_host(
                                                    SURF_NETWORK_ELEMENT_HOST,
                                                    current_routing);
   routingEdge->setId(current_routing->parsePU(routingEdge));
-  sg_host_edge_set(sg_host_by_name_or_create(host->id), routingEdge);
+  sg_host_t h = sg_host_by_name_or_create(host->id);
+  sg_host_edge_set(h, routingEdge);
   XBT_DEBUG("Having set name '%s' id '%d'", host->id, routingEdge->getId());
   simgrid::surf::routingEdgeCreatedCallbacks(routingEdge);
 
@@ -196,7 +197,7 @@ simgrid::surf::RoutingEdge *routing_add_host(
     }
     xbt_dynar_shrink(ctn, 0);
     xbt_dynar_free(&ctn_str);
-    xbt_lib_set(host_lib, host->id, COORD_HOST_LEVEL, (void *) ctn);
+    h->extension_set(COORD_HOST_LEVEL, (void *) ctn);
     XBT_DEBUG("Having set host coordinates for '%s'",host->id);
   }
 
@@ -1334,14 +1335,12 @@ const char *surf_AS_get_model(simgrid::surf::As *as)
 xbt_dynar_t surf_AS_get_hosts(simgrid::surf::As *as)
 {
   xbt_dynar_t elms = as->p_indexNetworkElm;
-  sg_routing_edge_t relm;
-  xbt_dictelm_t delm;
-  int index;
   int count = xbt_dynar_length(elms);
-  xbt_dynar_t res =  xbt_dynar_new(sizeof(xbt_dictelm_t), NULL);
-  for (index = 0; index < count; index++) {
-     relm = xbt_dynar_get_as(elms, index, simgrid::surf::RoutingEdge*);
-     delm = xbt_lib_get_elm_or_null(host_lib, relm->getName());
+  xbt_dynar_t res =  xbt_dynar_new(sizeof(sg_host_t), NULL);
+  for (int index = 0; index < count; index++) {
+     sg_routing_edge_t relm =
+      xbt_dynar_get_as(elms, index, simgrid::surf::RoutingEdge*);
+     sg_host_t delm = simgrid::Host::by_name_or_null(relm->getName());
      if (delm!=NULL) {
        xbt_dynar_push(res, &delm);
      }