X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3f9587e71330e7471ef675d2652cee260a0e3a96..a7c708d3570410ce5a1316a54f9dda55d2bb46ca:/src/kernel/routing/NetZoneImpl.hpp diff --git a/src/kernel/routing/NetZoneImpl.hpp b/src/kernel/routing/NetZoneImpl.hpp index bc922794db..acfb8d343a 100644 --- a/src/kernel/routing/NetZoneImpl.hpp +++ b/src/kernel/routing/NetZoneImpl.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2016. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2016-2018. 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. */ @@ -10,12 +10,12 @@ #include "xbt/graph.h" +#include "simgrid/forward.h" #include "simgrid/s4u/NetZone.hpp" -#include "simgrid/s4u/forward.hpp" +#include "src/surf/xml/platf_private.hpp" // FIXME: kill sg_platf_route_cbarg_t to remove that UGLY include namespace simgrid { namespace kernel { -class EngineImpl; namespace routing { class BypassRoute; @@ -48,20 +48,20 @@ class BypassRoute; * called Autonomous Systems in this article). * */ -XBT_PUBLIC_CLASS NetZoneImpl : public s4u::NetZone -{ +class XBT_PUBLIC NetZoneImpl : public s4u::NetZone { friend simgrid::kernel::EngineImpl; // it destroys netRoot_ protected: - explicit NetZoneImpl(NetZone * father, const char* name); + explicit NetZoneImpl(NetZone * father, std::string name); virtual ~NetZoneImpl(); public: /** @brief Make an host within that NetZone */ simgrid::s4u::Host* createHost(const char* name, std::vector* speedPerPstate, int coreAmount, - std::unordered_map* props); + std::map* props); /** @brief Creates a new route in this NetZone */ - void addBypassRoute(sg_platf_route_cbarg_t e_route) override; + void addBypassRoute(NetPoint * src, NetPoint * dst, NetPoint * gw_src, NetPoint * gw_dst, + std::vector & link_list, bool symmetrical) override; protected: /** @@ -72,11 +72,11 @@ protected: * @param into Container into which the traversed links and gateway informations should be pushed * @param latency Accumulator in which the latencies should be added (caller must set it to 0) */ - virtual void getLocalRoute(NetPoint * src, NetPoint * dst, sg_platf_route_cbarg_t into, double* latency) = 0; + virtual void getLocalRoute(NetPoint * src, NetPoint * dst, RouteCreationArgs * into, double* latency) = 0; /** @brief retrieves the list of all routes of size 1 (of type src x dst x Link) */ /* returns whether we found a bypass path */ bool getBypassRoute(routing::NetPoint * src, routing::NetPoint * dst, - /* OUT */ std::vector * links, double* latency); + /* OUT */ std::vector& links, double* latency); public: /* @brief get the route between two nodes in the full platform @@ -87,9 +87,10 @@ public: * @param latency Accumulator in which the latencies should be added (caller must set it to 0) */ static void getGlobalRoute(routing::NetPoint * src, routing::NetPoint * dst, - /* OUT */ std::vector * links, double* latency); + /* OUT */ std::vector& links, double* latency); - virtual void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) = 0; + virtual void getGraph(xbt_graph_t graph, std::map * nodes, + std::map * edges) = 0; enum class RoutingMode { unset = 0, /**< Undefined type */ base, /**< Base case: use simple link lists for routing */ @@ -100,7 +101,7 @@ public: private: std::map, BypassRoute*> bypassRoutes_; // src x dst -> route - routing::NetPoint* netcard_ = nullptr; // Our representative in the father NetZone + routing::NetPoint* netpoint_ = nullptr; // Our representative in the father NetZone }; } }