Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
don't load a private header from s4u/NetZone.hpp
[simgrid.git] / src / kernel / routing / FloydZone.hpp
index 1e5a87d..69ead53 100644 (file)
@@ -12,23 +12,34 @@ namespace simgrid {
 namespace kernel {
 namespace routing {
 
-/** Floyd routing data: slow initialization, fast lookup, lesser memory requirements, shortest path routing only */
-class XBT_PRIVATE AsFloyd: public AsRoutedGraph {
+/** @ingroup ROUTING_API
+ *  @brief NetZone with an explicit routing computed at initialization with Floyd-Warshal
+ *
+ *  The path between components is computed at creation time from every one-hop links,
+ *  using the Floyd-Warshal algorithm.
+ *
+ *  This result in rather small platform file, slow initialization time,  and intermediate memory requirements
+ *  (somewhere between the one of @{DijkstraZone} and the one of @{FullZone}).
+ */
+class XBT_PRIVATE FloydZone : public RoutedZone {
 public:
-  explicit AsFloyd(As* father, const char* name);
-  ~AsFloyd() override;
+  explicit FloydZone(NetZone* father, std::string name);
+  ~FloydZone() override;
 
-  void getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t into, double* latency) override;
-  void addRoute(sg_platf_route_cbarg_t route) override;
+  void getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t into, double* latency) override;
+  void addRoute(kernel::routing::NetPoint* src, kernel::routing::NetPoint* dst, kernel::routing::NetPoint* gw_src,
+                kernel::routing::NetPoint* gw_dst, std::vector<simgrid::surf::LinkImpl*>& link_list,
+                bool symmetrical) override;
   void seal() override;
 
 private:
   /* vars to compute the Floyd algorithm. */
-  int *predecessorTable_;
-  double *costTable_;
-  sg_platf_route_cbarg_t *linkTable_;
+  intpredecessorTable_;
+  doublecostTable_;
+  sg_platf_route_cbarg_tlinkTable_;
 };
-
-}}} // namespaces
+}
+}
+} // namespaces
 
 #endif /* SURF_ROUTING_FLOYD_HPP_ */