X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/210da270d0339479db706757d8c836621bb138c9..de57b34916659892d2dc26edabf552253afe2c18:/src/kernel/routing/ClusterZone.hpp diff --git a/src/kernel/routing/ClusterZone.hpp b/src/kernel/routing/ClusterZone.hpp index 497096cbd6..a9a786603d 100644 --- a/src/kernel/routing/ClusterZone.hpp +++ b/src/kernel/routing/ClusterZone.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. */ @@ -65,20 +65,28 @@ namespace routing { * (because the private router is directly connected to the cluster core). */ -class XBT_PRIVATE ClusterZone : public NetZoneImpl { +class ClusterZone : public NetZoneImpl { public: - explicit ClusterZone(NetZone* father, const char* name); + explicit ClusterZone(NetZone* father, std::string name); - void getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t into, double* latency) override; - void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges) override; + void getLocalRoute(NetPoint* src, NetPoint* dst, RouteCreationArgs* into, double* latency) override; + void getGraph(xbt_graph_t graph, std::map* nodes, + std::map* edges) override; - virtual void create_links_for_node(sg_platf_cluster_cbarg_t cluster, int id, int rank, int position); - virtual void parse_specific_arguments(sg_platf_cluster_cbarg_t cluster) {} + virtual void create_links_for_node(ClusterCreationArgs* cluster, int id, int rank, unsigned int position); + virtual void parse_specific_arguments(ClusterCreationArgs* cluster) + { + /* this routing method does not require any specific argument */ + } /* We use a map instead of a std::vector here because that's a sparse vector. Some values may not exist */ /* The pair is {linkUp, linkDown} */ std::unordered_map> privateLinks_; + unsigned int nodePosition(int id) { return id * linkCountPerNode_; } + unsigned int nodePositionWithLoopback(int id) { return nodePosition(id) + (hasLoopback_ ? 1 : 0); } + unsigned int nodePositionWithLimiter(int id) { return nodePositionWithLoopback(id) + (hasLimiter_ ? 1 : 0); } + surf::LinkImpl* backbone_ = nullptr; void* loopback_ = nullptr; NetPoint* router_ = nullptr;