X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/30aca4d4af004d1ec899d12f0a9fe3997e9be15e..de57b34916659892d2dc26edabf552253afe2c18:/src/kernel/routing/RoutedZone.hpp diff --git a/src/kernel/routing/RoutedZone.hpp b/src/kernel/routing/RoutedZone.hpp index 918856ff89..1a874b060b 100644 --- a/src/kernel/routing/RoutedZone.hpp +++ b/src/kernel/routing/RoutedZone.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2016. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2013-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,25 +12,67 @@ namespace simgrid { namespace kernel { namespace routing { +/** @ingroup ROUTING_API + * @brief NetZone with an explicit routing (abstract class) + * + * This abstract class factorizes code between its subclasses: Full, Dijkstra and Floyd. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Comparison of the RoutedZone subclasses
DijkstraZoneFloydZoneFullZone
Platform-file contentOnly 1-hop routes (rather small)Only 1-hop routes (rather small)Every path, explicitly (very large)
Initialization timeAlmost nothingFloyd-Warshall algorithm: O(n^3)Almost nothing
Memory usage1-hop routes (+ cache of routes)O(n^2) data (intermediate)O(n^2) + sum of path lengths (very large)
Lookup timeDijkstra Algo: O(n^3)not much (reconstruction phase)Almost nothing
ExpressivenessOnly shortest pathOnly shortest pathEverything
+ */ + class XBT_PRIVATE RoutedZone : public NetZoneImpl { public: - explicit RoutedZone(NetZone* father, const char* name); + explicit RoutedZone(NetZone* father, std::string name); - void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) override; - virtual sg_platf_route_cbarg_t newExtendedRoute(RoutingMode hierarchy, sg_platf_route_cbarg_t routearg, - int change_order); + void getGraph(xbt_graph_t graph, std::map* nodes, + std::map* edges) override; + virtual RouteCreationArgs* newExtendedRoute(RoutingMode hierarchy, NetPoint* src, NetPoint* dst, NetPoint* gw_src, + NetPoint* gw_dst, std::vector& link_list, + bool symmetrical, bool change_order); protected: - void getRouteCheckParams(NetCard* src, NetCard* dst); - void addRouteCheckParams(sg_platf_route_cbarg_t route); + void getRouteCheckParams(NetPoint* src, NetPoint* dst); + void addRouteCheckParams(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, + kernel::routing::NetPoint* gw_src, kernel::routing::NetPoint* gw_dst, + std::vector& link_list, bool symmetrical); }; } } } // namespace -SG_BEGIN_DECL() -XBT_PRIVATE xbt_node_t new_xbt_graph_node(xbt_graph_t graph, const char* name, xbt_dict_t nodes); -XBT_PRIVATE xbt_edge_t new_xbt_graph_edge(xbt_graph_t graph, xbt_node_t s, xbt_node_t d, xbt_dict_t edges); -SG_END_DECL() +extern "C" { +XBT_PRIVATE xbt_node_t new_xbt_graph_node(xbt_graph_t graph, const char* name, + std::map* nodes); +XBT_PRIVATE xbt_edge_t new_xbt_graph_edge(xbt_graph_t graph, xbt_node_t s, xbt_node_t d, + std::map* edges); +} #endif /* SIMGRID_ROUTING_GENERIC_HPP_ */