X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a79a8e1cab86ccc687cfbc97b01b735acb996f16..de57b34916659892d2dc26edabf552253afe2c18:/src/kernel/routing/RoutedZone.hpp diff --git a/src/kernel/routing/RoutedZone.hpp b/src/kernel/routing/RoutedZone.hpp index 8db82e1f02..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,20 +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 +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_ */