X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f89671e0bd7450461d70d5ced6079123e73c2a63..40ee10e13b61bfb28374d96ade010a262b5abd44:/include/simgrid/kernel/routing/DijkstraZone.hpp diff --git a/include/simgrid/kernel/routing/DijkstraZone.hpp b/include/simgrid/kernel/routing/DijkstraZone.hpp index c7a2cc8494..dbaef58130 100644 --- a/include/simgrid/kernel/routing/DijkstraZone.hpp +++ b/include/simgrid/kernel/routing/DijkstraZone.hpp @@ -1,17 +1,14 @@ -/* Copyright (c) 2013-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2013-2023. 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. */ -#ifndef SURF_ROUTING_DIJKSTRA_HPP_ -#define SURF_ROUTING_DIJKSTRA_HPP_ +#ifndef SIMGRID_ROUTING_DIJKSTRA_HPP_ +#define SIMGRID_ROUTING_DIJKSTRA_HPP_ #include - -namespace simgrid { -namespace kernel { -namespace routing { +namespace simgrid::kernel::routing { /** @ingroup ROUTING_API * @brief NetZone with an explicit routing computed on need with Dijkstra @@ -23,19 +20,22 @@ namespace routing { * long path resolution times. */ class XBT_PRIVATE DijkstraZone : public RoutedZone { -public: - DijkstraZone(NetZoneImpl* father, const std::string& name, resource::NetworkModel* netmodel, bool cached); - DijkstraZone(const DijkstraZone&) = delete; - DijkstraZone& operator=(const DijkstraZone&) = delete; + static void route_graph_delete(xbt_graph_t); - ~DijkstraZone() override; + std::unique_ptr route_graph_{ + xbt_graph_new_graph(1, nullptr), &DijkstraZone::route_graph_delete}; + std::map graph_node_map_; + bool cached_; + std::map> route_cache_; -private: - xbt_node_t route_graph_new_node(int id); - xbt_node_t node_map_search(int id); - void new_edge(int src_id, int dst_id, RouteCreationArgs* e_route); + xbt_node_t route_graph_new_node(unsigned long id); + xbt_node_t node_map_search(unsigned long id); + void new_edge(unsigned long src_id, unsigned long dst_id, Route* e_route); + void do_seal() override; public: + DijkstraZone(const std::string& name, bool cached) : RoutedZone(name), cached_(cached) {} + /* 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 @@ -47,18 +47,10 @@ public: * After this function returns, any node in the graph * will have a loopback attached to it. */ - void seal() override; - void get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* route, double* lat) override; + void get_local_route(const NetPoint* src, const NetPoint* dst, Route* route, double* lat) override; void add_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoint* gw_dst, - std::vector& link_list, bool symmetrical) override; - - xbt_graph_t route_graph_ = nullptr; /* xbt_graph */ - std::map graph_node_map_; /* map */ - bool cached_; /* cache mode */ - std::map> route_cache_; /* use in cache mode */ + const std::vector& link_list, bool symmetrical) override; }; -} // namespace routing -} // namespace kernel -} // namespace simgrid +} // namespace simgrid::kernel::routing -#endif /* SURF_ROUTING_DIJKSTRA_HPP_ */ +#endif /* SIMGRID_ROUTING_DIJKSTRA_HPP_ */