X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/579d27969fbc1fa8004de922816a0068e52a9fa6..22e6546d2c6f14864cc93c4ed1470d8e8c1e2d95:/src/kernel/routing/DijkstraZone.hpp diff --git a/src/kernel/routing/DijkstraZone.hpp b/src/kernel/routing/DijkstraZone.hpp index a8432cb4c9..f7fc503c5e 100644 --- a/src/kernel/routing/DijkstraZone.hpp +++ b/src/kernel/routing/DijkstraZone.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2016. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2013-2017. The SimGrid Team. All rights reserved. */ /* 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. */ @@ -8,19 +8,11 @@ #include "src/kernel/routing/RoutedZone.hpp" -typedef struct graph_node_data { +struct s_graph_node_data_t { int id; 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 { - xbt_node_t node; -} s_graph_node_map_element_t, *graph_node_map_element_t; - -typedef struct route_cache_element { - int* pred_arr; - int size; -} s_route_cache_element_t, *route_cache_element_t; +}; +typedef s_graph_node_data_t* graph_node_data_t; namespace simgrid { namespace kernel { @@ -36,22 +28,18 @@ namespace routing { * 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 intermediate memory requirements - * (somewhere between the one of @{DijkstraZone} and the one of @{FullZone}). + * This result in rather small platform file, very fast initialization, and very low memory requirements, but somehow long path resolution times. */ - -/** Dijkstra routing data: fast initialization, slow lookup, small memory requirements, shortest path routing only */ class XBT_PRIVATE DijkstraZone : public RoutedZone { public: - DijkstraZone(NetZone* father, const char* name, bool cached); + DijkstraZone(NetZone* father, std::string name, bool cached); void seal() override; ~DijkstraZone() override; xbt_node_t routeGraphNewNode(int id, int graph_id); - graph_node_map_element_t nodeMapSearch(int id); + xbt_node_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, + /* 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. @@ -62,12 +50,13 @@ public: * 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; + 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 */ + std::map graphNodeMap_; /* map */ + bool cached_; /* cache mode */ + std::map> routeCache_; /* use in cache mode */ }; } }