Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git] / src / kernel / routing / DijkstraZone.hpp
index 34c2d0e..b19cd34 100644 (file)
@@ -10,7 +10,7 @@
 
 typedef struct graph_node_data {
   int id;
-  int graph_id;                 /* used for caching internal graph id's */
+  int graph_id; /* used for caching internal graph id's */
 } s_graph_node_data_t, *graph_node_data_t;
 
 typedef struct graph_node_map_element {
@@ -18,7 +18,7 @@ typedef struct graph_node_map_element {
 } s_graph_node_map_element_t, *graph_node_map_element_t;
 
 typedef struct route_cache_element {
-  int *pred_arr;
+  intpred_arr;
   int size;
 } s_route_cache_element_t, *route_cache_element_t;
 
@@ -30,36 +30,43 @@ namespace routing {
  * Classes *
  ***********/
 
-/** Dijkstra routing data: fast initialization, slow lookup, small memory requirements, shortest path routing only */
-class XBT_PRIVATE AsDijkstra : public AsRoutedGraph {
+/** @ingroup ROUTING_API
+ *  @brief NetZone with an explicit routing computed on need with Dijsktra
+ *
+ *  The path between components is computed each time you request it,
+ *  using the Dijkstra algorithm. A cache can be used to reduce the computation.
+ *
+ *  This result in rather small platform file, very fast initialization, and very low memory requirements, but somehow long path resolution times.
+ */
+class XBT_PRIVATE DijkstraZone : public RoutedZone {
 public:
-  AsDijkstra(As* father, const char* name, bool cached);
+  DijkstraZone(NetZone* father, const char* name, bool cached);
   void seal() override;
 
-  ~AsDijkstra() override;
+  ~DijkstraZone() override;
   xbt_node_t routeGraphNewNode(int id, int graph_id);
   graph_node_map_element_t nodeMapSearch(int id);
   void newRoute(int src_id, int dst_id, sg_platf_route_cbarg_t e_route);
-    /**
-     * For each vertex (node) already in the graph,
-     * make sure it also has a loopback link; this loopback
-     * can potentially already be in the graph, and in that
-     * case nothing will be done.
-     *
-     * If no loopback is specified for a node, we will use
-     * the loopback that is provided by the routing platform.
-     *
-     * After this function returns, any node in the graph
-     * will have a loopback attached to it.
-     */
-  void getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t route, double* lat) override;
+  /* For each vertex (node) already in the graph,
+   * make sure it also has a loopback link; this loopback
+   * can potentially already be in the graph, and in that
+   * case nothing will be done.
+   *
+   * If no loopback is specified for a node, we will use
+   * the loopback that is provided by the routing platform.
+   *
+   * After this function returns, any node in the graph
+   * will have a loopback attached to it.
+   */
+  void getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t route, double* lat) override;
   void addRoute(sg_platf_route_cbarg_t route) override;
 
-  xbt_graph_t routeGraph_ = nullptr;     /* xbt_graph */
-  xbt_dict_t graphNodeMap_ = nullptr;    /* map */
-  xbt_dict_t routeCache_ = nullptr;      /* use in cache mode */
+  xbt_graph_t routeGraph_  = nullptr; /* xbt_graph */
+  xbt_dict_t graphNodeMap_ = nullptr; /* map */
+  xbt_dict_t routeCache_   = nullptr; /* use in cache mode */
 };
-
-}}} // namespaces
+}
+}
+} // namespaces
 
 #endif /* SURF_ROUTING_DIJKSTRA_HPP_ */