* 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;
+private:
+ static void route_graph_delete(xbt_graph_t);
- ~DijkstraZone() override;
+ std::unique_ptr<s_xbt_graph_t, decltype(&DijkstraZone::route_graph_delete)> route_graph_{
+ xbt_graph_new_graph(1, nullptr), &DijkstraZone::route_graph_delete};
+ std::map<int, xbt_node_t> graph_node_map_;
+ bool cached_;
+ std::map<int, std::vector<int>> 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);
public:
+ DijkstraZone(NetZoneImpl* father, const std::string& name, resource::NetworkModel* netmodel, bool 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
void get_local_route(NetPoint* src, NetPoint* dst, RouteCreationArgs* route, double* lat) override;
void add_route(NetPoint* src, NetPoint* dst, NetPoint* gw_src, NetPoint* gw_dst,
std::vector<resource::LinkImpl*>& link_list, bool symmetrical) override;
-
- xbt_graph_t route_graph_ = nullptr; /* xbt_graph */
- std::map<int, xbt_node_t> graph_node_map_; /* map */
- bool cached_; /* cache mode */
- std::map<int, std::vector<int>> route_cache_; /* use in cache mode */
};
} // namespace routing
} // namespace kernel