/* 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. */
-#include "surf_routing_cluster.hpp"
-
#ifndef SURF_ROUTING_CLUSTER_FAT_TREE_HPP_
#define SURF_ROUTING_CLUSTER_FAT_TREE_HPP_
+#include <string>
+#include <map>
+#include <vector>
+
+#include <xbt/base.h>
+
+#include "surf_routing_cluster.hpp"
+
+namespace simgrid {
+namespace surf {
/** \file surf_routing_cluster_fat_tree.cpp
* The class AsClusterFatTree describes PGFT, as introduced by Eitan Zahavi
* address real world constraints, which are not currently enforced.
*/
-class FatTreeNode;
-class FatTreeLink;
+class XBT_PRIVATE FatTreeNode;
+class XBT_PRIVATE FatTreeLink;
/** \brief A node in a fat tree.
* A FatTreeNode can either be a switch or a processing node. Switches are
public:
FatTreeLink(sg_platf_cluster_cbarg_t cluster, FatTreeNode *source,
FatTreeNode *destination);
- /** Link going up in the tree
- */
+ /** Link going up in the tree */
Link *upLink;
- /** Link going down in the tree
- */
+ /** Link going down in the tree */
Link *downLink;
- /** Upper end of the link
- */
+ /** Upper end of the link */
FatTreeNode *upNode;
- /** Lower end of the link
- */
+ /** Lower end of the link */
FatTreeNode *downNode;
};
*
* Routing is made using a destination-mod-k scheme.
*/
-class AsClusterFatTree : public AsCluster {
+class XBT_PRIVATE AsClusterFatTree : public AsCluster {
public:
AsClusterFatTree();
~AsClusterFatTree();
- virtual void getRouteAndLatency(RoutingEdge *src, RoutingEdge *dst,
+ virtual void getRouteAndLatency(NetCard *src, NetCard *dst,
sg_platf_route_cbarg_t into,
- double *latency);
+ double *latency) override;
/** \brief Generate the fat tree
*
* It will also store the cluster for future use.
*/
void parse_specific_arguments(sg_platf_cluster_cbarg_t cluster);
- /** \brief Add a processing node.
- */
void addProcessingNode(int id);
- void generateDotFile(const string& filename = "fatTree.dot") const;
+ void generateDotFile(const std::string& filename = "fatTree.dot") const;
private:
bool areRelated(FatTreeNode *parent, FatTreeNode *child);
bool isInSubTree(FatTreeNode *root, FatTreeNode *node);
};
+
+}
+}
+
#endif