X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/34183f01fa5fb9c81919d6f04ccac8a927a36504..28f758f3ac685281f048a22a99405f48163be169:/src/kernel/routing/NetZoneImpl.hpp diff --git a/src/kernel/routing/NetZoneImpl.hpp b/src/kernel/routing/NetZoneImpl.hpp index ef725ab4f7..4a3e5ec262 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-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. */ @@ -12,6 +12,7 @@ #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 { @@ -53,14 +54,16 @@ XBT_PUBLIC_CLASS 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); + simgrid::s4u::Host* createHost(const char* name, std::vector* speedPerPstate, int coreAmount, + 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: /** @@ -71,11 +74,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(NetCard * src, NetCard * dst, sg_platf_route_cbarg_t into, double* latency) = 0; + virtual void getLocalRoute(NetPoint * src, NetPoint * 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) */ /* returns whether we found a bypass path */ - bool getBypassRoute(routing::NetCard * src, routing::NetCard * dst, - /* OUT */ std::vector * links, double* latency); + bool getBypassRoute(routing::NetPoint * src, routing::NetPoint * dst, + /* OUT */ std::vector& links, double* latency); public: /* @brief get the route between two nodes in the full platform @@ -85,10 +88,11 @@ public: * @param links Accumulator in which all traversed links should be pushed (caller must empty it) * @param latency Accumulator in which the latencies should be added (caller must set it to 0) */ - static void getGlobalRoute(routing::NetCard * src, routing::NetCard * dst, - /* OUT */ std::vector * links, double* latency); + static void getGlobalRoute(routing::NetPoint * src, routing::NetPoint * dst, + /* 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 */ @@ -98,8 +102,8 @@ public: RoutingMode hierarchy_ = RoutingMode::unset; private: - std::map, BypassRoute*> bypassRoutes_; // src x dst -> route - routing::NetCard* netcard_ = nullptr; // Our representative in the father NetZone + std::map, BypassRoute*> bypassRoutes_; // src x dst -> route + routing::NetPoint* netpoint_ = nullptr; // Our representative in the father NetZone }; } }