Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Give a p_netcard to simgrid::Host instead of relying on extensions for that
[simgrid.git] / src / surf / surf_routing_generic.cpp
index febb60a..1dc0d18 100644 (file)
@@ -4,11 +4,21 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#include <cstdlib>
+
+#include <algorithm>
+
+#include <xbt/dict.h>
+#include <xbt/log.h>
+#include <xbt/sysdep.h>
+#include <xbt/dynar.h>
+#include <xbt/graph.h>
+
 #include "simgrid/platf_interface.h"    // platform creation API internal interface
 
 #include "surf_routing_generic.hpp"
+#include "surf_routing_private.hpp"
 #include "network_interface.hpp"
-#include "xbt/graph.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_routing_generic, surf_route, "Generic implementation of the surf routing");
 
@@ -22,6 +32,9 @@ void generic_free_route(sg_platf_route_cbarg_t route)
   }
 }
 
+namespace simgrid {
+namespace surf {
+  
 void AsGeneric::parseRoute(sg_platf_route_cbarg_t /*route*/){
   THROW_IMPOSSIBLE;
 }
@@ -30,7 +43,7 @@ void AsGeneric::parseASroute(sg_platf_route_cbarg_t /*route*/){
   THROW_IMPOSSIBLE;
 }
 
-void AsGeneric::getRouteAndLatency(RoutingEdge */*src*/, RoutingEdge */*dst*/, sg_platf_route_cbarg_t /*into*/, double */*latency*/){
+void AsGeneric::getRouteAndLatency(NetCard */*src*/, NetCard */*dst*/, sg_platf_route_cbarg_t /*into*/, double */*latency*/){
   THROW_IMPOSSIBLE;
 }
 
@@ -42,17 +55,17 @@ AsGeneric::~AsGeneric() {
   xbt_dict_free(&p_bypassRoutes);
 }
 
-int AsGeneric::parsePU(RoutingEdge *elm)
+int AsGeneric::parsePU(NetCard *elm)
 {
   XBT_DEBUG("Load process unit \"%s\"", elm->getName());
-  xbt_dynar_push_as(p_indexNetworkElm, RoutingEdge*, elm);
+  xbt_dynar_push_as(p_indexNetworkElm, NetCard*, elm);
   return xbt_dynar_length(p_indexNetworkElm)-1;
 }
 
-int AsGeneric::parseAS(RoutingEdge *elm)
+int AsGeneric::parseAS(NetCard *elm)
 {
   XBT_DEBUG("Load Autonomous system \"%s\"", elm->getName());
-  xbt_dynar_push_as(p_indexNetworkElm, RoutingEdge*, elm);
+  xbt_dynar_push_as(p_indexNetworkElm, NetCard*, elm);
   return xbt_dynar_length(p_indexNetworkElm)-1;
 }
 
@@ -89,14 +102,12 @@ void AsGeneric::parseBypassroute(sg_platf_route_cbarg_t e_route)
   xbt_free(route_name);
 }
 
+}
+}
+
 /* ************************************************************************** */
 /* *********************** GENERIC BUSINESS METHODS ************************* */
 
-xbt_dynar_t AsGeneric::getOneLinkRoutes() { // FIXME: kill that stub
-  xbt_die("\"generic_get_onelink_routes\" not implemented yet");
-  return NULL;
-}
-
 static const char *instr_node_name(xbt_node_t node)
 {
   void *data = xbt_graph_node_get_data(node);
@@ -142,6 +153,14 @@ xbt_edge_t new_xbt_graph_edge(xbt_graph_t graph, xbt_node_t s, xbt_node_t d,
   return ret;
 }
 
+namespace simgrid {
+namespace surf {
+
+xbt_dynar_t AsGeneric::getOneLinkRoutes() { // FIXME: kill that stub
+  xbt_die("\"generic_get_onelink_routes\" not implemented yet");
+  return NULL;
+}
+
 void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
 {
   int src, dst;
@@ -149,13 +168,13 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
 
 
   for (src = 0; src < table_size; src++) {
-    RoutingEdge *my_src =
-        xbt_dynar_get_as(p_indexNetworkElm, src, RoutingEdge*);
+    NetCard *my_src =
+        xbt_dynar_get_as(p_indexNetworkElm, src, NetCard*);
     for (dst = 0; dst < table_size; dst++) {
       if (src == dst)
         continue;
-      RoutingEdge *my_dst =
-          xbt_dynar_get_as(p_indexNetworkElm, dst, RoutingEdge*);
+      NetCard *my_dst =
+          xbt_dynar_get_as(p_indexNetworkElm, dst, NetCard*);
 
       sg_platf_route_cbarg_t route = xbt_new0(s_sg_platf_route_cbarg_t, 1);
       route->link_list = xbt_dynar_new(sizeof(sg_routing_link_t), NULL);
@@ -179,7 +198,8 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
       }
 
       xbt_dynar_foreach(route->link_list, cpt, link) {
-        const char *link_name = static_cast<Resource*>(link)->getName();
+        const char *link_name = static_cast<simgrid::surf::Resource*>(
+          link)->getName();
         current = new_xbt_graph_node(graph, link_name, nodes);
         current_name = link_name;
         new_xbt_graph_edge(graph, previous, current, edges);
@@ -204,8 +224,8 @@ void AsGeneric::getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges)
   }
 }
 
-sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdge *src,
-                                               RoutingEdge *dst,
+sg_platf_route_cbarg_t AsGeneric::getBypassRoute(NetCard *src,
+                                               NetCard *dst,
                                                double *lat)
 {
   // If never set a bypass route return NULL without any further computations
@@ -271,7 +291,7 @@ sg_platf_route_cbarg_t AsGeneric::getBypassRoute(RoutingEdge *src,
     int max_index_src = path_src->used - 1;
     int max_index_dst = path_dst->used - 1;
 
-    int max_index = max(max_index_src, max_index_dst);
+    int max_index = std::max(max_index_src, max_index_dst);
     int i, max;
 
     for (max = 0; max <= max_index; max++) {
@@ -407,7 +427,7 @@ As *AsGeneric::autonomousSystemExist(char *element)
   As *element_as, *result, *elem;
   xbt_dict_cursor_t cursor = NULL;
   char *key;
-  element_as = ((RoutingEdge*)
+  element_as = ((NetCard*)
       xbt_lib_get_or_null(as_router_lib, element,
           ROUTING_ASR_LEVEL))->getRcComponent();
   result = ((As*) - 1);
@@ -429,13 +449,13 @@ As *AsGeneric::autonomousSystemExist(char *element)
 
 As *AsGeneric::processingUnitsExist(char *element)
 {
-  As *element_as = sg_host_edge(sg_host_by_name(element)) ->getRcComponent();
+  As *element_as = sg_host_by_name(element)->p_netcard ->getRcComponent();
   if (element_as == this)
     return element_as;
   return asExist(element_as);
 }
 
-void AsGeneric::srcDstCheck(RoutingEdge *src, RoutingEdge *dst)
+void AsGeneric::srcDstCheck(NetCard *src, NetCard *dst)
 {
   if (src == NULL || dst == NULL)
     xbt_die("Ask for route \"from\"(%s) or \"to\"(%s) no found at AS \"%s\"",
@@ -460,3 +480,6 @@ void AsGeneric::srcDstCheck(RoutingEdge *src, RoutingEdge *dst)
         dst_as->p_name,
         p_name);
 }
+
+}
+}