X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6a923fd453c6cf3787ae85ebdae7035a46272e03..b2f3150048cd87c9e16e251fea65c40221fd56ea:/src/kernel/routing/AsImpl.hpp diff --git a/src/kernel/routing/AsImpl.hpp b/src/kernel/routing/AsImpl.hpp index 47478528c1..ce34fdf50f 100644 --- a/src/kernel/routing/AsImpl.hpp +++ b/src/kernel/routing/AsImpl.hpp @@ -22,7 +22,8 @@ namespace routing { /** @brief Autonomous Systems * * An AS is a network container, in charge of routing information between elements (hosts) and to the nearby ASes. - * In SimGrid, there is a hierarchy of ASes, with a unique root AS (that you can retrieve from the s4u::Engine). + * In SimGrid, there is a hierarchy (a tree) of ASes, with a unique root AS (that you can retrieve from the + * s4u::Engine). */ XBT_PUBLIC_CLASS AsImpl : public s4u::As { @@ -30,7 +31,6 @@ namespace routing { protected: explicit AsImpl(As * father, const char* name); - ~AsImpl() override; public: /** @brief Make an host within that AS */ @@ -61,17 +61,18 @@ namespace routing { * @param into Container into which the traversed links should be pushed * @param latency Accumulator in which the latencies should be added (caller must set it to 0) */ - virtual void getRouteAndLatency(NetCard * src, NetCard * dst, sg_platf_route_cbarg_t into, double* latency) = 0; + protected: + virtual void getLocalRoute(NetCard * src, NetCard * dst, sg_platf_route_cbarg_t into, double* latency) = 0; /** @brief retrieves the list of all routes of size 1 (of type src x dst x Link) */ - virtual void getOneLinkRoutes(std::vector * accumulator); /* returns whether we found a bypass path */ bool getBypassRoute(routing::NetCard * src, routing::NetCard * dst, /* OUT */ std::vector * links, double* latency); + public: + virtual void getOneLinkRoutes(std::vector * accumulator); virtual void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) = 0; static void getRouteRecursive(routing::NetCard * src, routing::NetCard * dst, /* OUT */ std::vector * links, double* latency); - enum class RoutingMode { unset = 0, /**< Undefined type */ base, /**< Base case: use simple link lists for routing */ @@ -79,6 +80,8 @@ namespace routing { }; /* FIXME: protect the following fields once the construction madness is sorted out */ RoutingMode hierarchy_ = RoutingMode::unset; + + private: routing::NetCard* netcard_ = nullptr; // Our representative in the father AS };