Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
sanitize get_network_element_type()
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 10 Nov 2011 17:42:59 +0000 (18:42 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 10 Nov 2011 17:44:53 +0000 (18:44 +0100)
It were declared as a field of global_routing, and of each and every
routing model. That's a bit much for a simple little function.

12 files changed:
src/include/surf/surf.h
src/msg/msg_host.c
src/surf/surf_private.h
src/surf/surf_routing.c
src/surf/surf_routing_dijkstra.c
src/surf/surf_routing_floyd.c
src/surf/surf_routing_full.c
src/surf/surf_routing_generic.c
src/surf/surf_routing_rulebased.c
src/surf/surf_routing_vivaldi.c
teshsuite/simdag/platforms/flatifier.c
teshsuite/simdag/platforms/is_router_test.c

index 9e906a3..8ac4782 100644 (file)
@@ -28,8 +28,8 @@ typedef enum {
   SURF_NETWORK_ELEMENT_AS,      /* AS type */
 } e_surf_network_element_type_t;
 
-XBT_PUBLIC(e_surf_network_element_type_t) get_network_element_type(const char
-                                                              *name);
+XBT_PUBLIC(e_surf_network_element_type_t)
+  routing_get_network_element_type(const char *name);
 
 /** @Brief Specify that we use that action */
 XBT_PUBLIC(void) surf_action_ref(surf_action_t action);
index a3af07a..9b6688c 100644 (file)
@@ -168,7 +168,7 @@ m_host_t *MSG_get_host_table(void)
                array = xbt_new0(void *, host_lib->count);
 
          xbt_lib_foreach(host_lib, cursor, key, data) {
-           if(get_network_element_type(key) == SURF_NETWORK_ELEMENT_HOST)
+           if(routing_get_network_element_type(key) == SURF_NETWORK_ELEMENT_HOST)
                array[i++] = data[MSG_HOST_LEVEL];
          }
 
index fdb4dfe..15f9cbf 100644 (file)
@@ -140,7 +140,6 @@ typedef struct s_as {
   double(*get_latency) (AS_t as, const char *src,
                         const char *dst, route_extended_t e_route);
   xbt_dynar_t(*get_onelink_routes) (AS_t as);
-  e_surf_network_element_type_t(*get_network_element_type) (const char *name);
   route_extended_t(*get_bypass_route) (AS_t as,
                                        const char *src, const char *dst);
   void (*finalize) (AS_t as);
@@ -173,8 +172,6 @@ struct s_routing_global {
   xbt_dynar_t(*get_onelink_routes) (void);
   void (*get_route_latency)(const char *src, const char *dst,
                             xbt_dynar_t *route, double *latency, int cleanup);
-  e_surf_network_element_type_t(*get_network_element_type) (const char *name);
-  xbt_dynar_t last_route;
 };
 
 XBT_PUBLIC(void) routing_model_create(size_t size_of_link, void *loopback);
index 0455c7e..f20ed82 100644 (file)
@@ -594,13 +594,15 @@ static void _get_route_latency(const char *src, const char *dst,
 static void get_route_latency(const char *src, const char *dst,
                               xbt_dynar_t * route, double *latency, int cleanup)
 {
+  static xbt_dynar_t last_route = NULL;
+
   _get_route_latency(src, dst, route, latency);
   xbt_assert(!route || *route, "no route between \"%s\" and \"%s\"", src, dst);
   xbt_assert(!latency || *latency >= 0.0,
              "latency error on route between \"%s\" and \"%s\"", src, dst);
   if (route) {
-    xbt_dynar_free(&global_routing->last_route);
-    global_routing->last_route = cleanup ? *route : NULL;
+    xbt_dynar_free(&last_route);
+    last_route = cleanup ? *route : NULL;
   }
 }
 
@@ -670,7 +672,7 @@ static xbt_dynar_t get_onelink_routes(void)
   return recursive_get_onelink_routes(global_routing->root);
 }
 
-e_surf_network_element_type_t get_network_element_type(const char *name)
+e_surf_network_element_type_t routing_get_network_element_type(const char *name)
 {
   network_element_info_t rc = NULL;
 
@@ -698,10 +700,8 @@ void routing_model_create(size_t size_of_links, void *loopback)
   global_routing->get_route_no_cleanup = get_route_no_cleanup;
   global_routing->get_onelink_routes = get_onelink_routes;
   global_routing->get_route_latency = get_route_latency;
-  global_routing->get_network_element_type = get_network_element_type;
   global_routing->loopback = loopback;
   global_routing->size_of_link = size_of_links;
-  global_routing->last_route = NULL;
   /* no current routing at moment */
   current_routing = NULL;
 }
@@ -1235,6 +1235,5 @@ void routing_exit(void) {
   if (!global_routing)
     return;
   finalize_rec(global_routing->root);
-  xbt_dynar_free(&global_routing->last_route);
   xbt_free(global_routing);
 }
index 68ea411..33cf01b 100644 (file)
@@ -519,9 +519,9 @@ void model_dijkstra_both_parse_route (AS_t asg, const char *src,
        else{
          XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
                         route->src_gateway, dst, route->dst_gateway);
-         if(global_routing->get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
+         if(routing_get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
                  xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
-         if(global_routing->get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
+         if(routing_get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
                  xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
        }
 
index c29b209..23bb9c4 100644 (file)
@@ -311,9 +311,9 @@ void model_floyd_parse_route(AS_t rc, const char *src,
                else{
                        XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
                                 route->src_gateway, dst, route->dst_gateway);
-                       if(global_routing->get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
+                       if(routing_get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
                                xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
-                       if(global_routing->get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
+                       if(routing_get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
                                xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
                }
            TO_FLOYD_LINK(*src_id, *dst_id) =
index 15ef1e2..2bd5b2d 100644 (file)
@@ -216,9 +216,9 @@ void model_full_set_route(AS_t rc, const char *src,
                  else{
                          XBT_DEBUG("Load ASroute from \"%s(%s)\" to \"%s(%s)\"", src,
                                 route->src_gateway, dst, route->dst_gateway);
-                         if(global_routing->get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
+                         if(routing_get_network_element_type((const char*)route->dst_gateway) == SURF_NETWORK_ELEMENT_NULL)
                                  xbt_die("The dst_gateway '%s' does not exist!",route->dst_gateway);
-                         if(global_routing->get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
+                         if(routing_get_network_element_type((const char*)route->src_gateway) == SURF_NETWORK_ELEMENT_NULL)
                                  xbt_die("The src_gateway '%s' does not exist!",route->src_gateway);
                  }
              TO_ROUTE_FULL(*src_id, *dst_id) = generic_new_extended_route(rc->hierarchy,route,1);
index e99aa19..a6501cb 100644 (file)
@@ -30,7 +30,6 @@ AS_t routmod_generic_create(size_t childsize) {
   new_component->finalize = NULL;
   new_component->to_index = xbt_dict_new();
   new_component->bypassRoutes = xbt_dict_new();
-  new_component->get_network_element_type = get_network_element_type;
 
   return new_component;
 }
index 6e7a605..9fad2dc 100644 (file)
@@ -230,7 +230,7 @@ static xbt_dynar_t rulebased_get_onelink_routes(AS_t rc)
   //find router
   char *router = NULL;
   xbt_dict_foreach(routing->dict_processing_units, c1, k1, d1) {
-    if (rc->get_network_element_type(k1) == SURF_NETWORK_ELEMENT_ROUTER){
+    if (routing_get_network_element_type(k1) == SURF_NETWORK_ELEMENT_ROUTER){
       router = k1;
     }
   }
index 687bc87..73b4a38 100644 (file)
@@ -58,7 +58,7 @@ static double base_vivaldi_get_latency (const char *src, const char *dst)
 
 static double vivaldi_get_link_latency (AS_t rc,const char *src, const char *dst, route_extended_t e_route)
 {
-  if(get_network_element_type(src) == SURF_NETWORK_ELEMENT_AS) {
+  if(routing_get_network_element_type(src) == SURF_NETWORK_ELEMENT_AS) {
          int need_to_clean = e_route?0:1;
          double latency;
          e_route = e_route?e_route:(*(rc->get_route)) (rc, src, dst);
index 59f1ffe..b02c896 100644 (file)
@@ -149,7 +149,7 @@ int main(int argc, char **argv)
                  }
                  xbt_lib_foreach(as_router_lib, cursor_dst, dst, value) //to router
                  {
-                           if(get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
+                           if(routing_get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
                                printf("  <route src=\"%s\" dst=\"%s\">\n       "
                                          ,src
                                          ,dst);
@@ -169,10 +169,10 @@ int main(int argc, char **argv)
 
   xbt_lib_foreach(as_router_lib, cursor_src, src, value) // Routes from router
   {
-         if(get_network_element_type(src) == SURF_NETWORK_ELEMENT_ROUTER){
+         if(routing_get_network_element_type(src) == SURF_NETWORK_ELEMENT_ROUTER){
                  xbt_lib_foreach(as_router_lib, cursor_dst, dst, value) //to router
                  {
-                               if(get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
+                               if(routing_get_network_element_type(dst) == SURF_NETWORK_ELEMENT_ROUTER){
                                printf("  <route src=\"%s\" dst=\"%s\">\n       "
                                          ,src
                                          ,dst);
index df14488..443d6e3 100644 (file)
@@ -29,12 +29,12 @@ int main(int argc, char **argv)
 
   xbt_lib_foreach(host_lib, cursor, key, data) {
     printf("   - Seen: \"%s\" is type : %d\n", key,
-           (int) global_routing->get_network_element_type(key));
+           (int) routing_get_network_element_type(key));
   }
 
   xbt_lib_foreach(as_router_lib, cursor, key, data) {
     printf("   - Seen: \"%s\" is type : %d\n", key,
-           (int) global_routing->get_network_element_type(key));
+           (int) routing_get_network_element_type(key));
   }
 
   SD_exit();