Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add Floyd routing
[simgrid.git] / src / surf / surf_routing_floyd.hpp
diff --git a/src/surf/surf_routing_floyd.hpp b/src/surf/surf_routing_floyd.hpp
new file mode 100644 (file)
index 0000000..72ada10
--- /dev/null
@@ -0,0 +1,44 @@
+#include "surf_routing_generic.hpp"
+
+#ifndef SURF_ROUTING_FLOYD_HPP_
+#define SURF_ROUTING_FLOYD_HPP_
+
+
+/***********
+ * Classes *
+ ***********/
+class AsFloyd;
+typedef AsFloyd *AsFloydPtr;
+
+class AsFloyd: public AsGeneric {
+public:
+  AsFloyd();
+  ~AsFloyd();
+
+  void getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t into, double *latency);
+  xbt_dynar_t getOneLinkRoutes();
+  void parseRoute(sg_platf_route_cbarg_t route);
+  void end();
+  //void parseASroute(sg_platf_route_cbarg_t route);
+
+  //void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges);
+  //sg_platf_route_cbarg_t getBypassRoute(RoutingEdgePtr src, RoutingEdgePtr dst, double *lat);
+
+  /* The parser calls the following functions to inform the routing models
+   * that a new element is added to the AS currently built.
+   *
+   * Of course, only the routing model of this AS is informed, not every ones */
+  //int parsePU(RoutingEdgePtr elm); /* A host or a router, whatever */
+  //int parseAS(RoutingEdgePtr elm);
+
+  //virtual void parseBypassroute(sg_platf_route_cbarg_t e_route)=0;
+
+  /* vars for calculate the floyd algorith. */
+  int *p_predecessorTable;
+  double *p_costTable;
+  sg_platf_route_cbarg_t *p_linkTable;
+};
+
+
+
+#endif /* SURF_ROUTING_FLOYD_HPP_ */