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, const char* name);
+ ~FloydZone() override;
- void getLocalRoute(NetCard* src, NetCard* dst, sg_platf_route_cbarg_t into, double* latency) override;
+ void getLocalRoute(NetPoint* src, NetPoint* dst, sg_platf_route_cbarg_t into, double* latency) override;
void addRoute(sg_platf_route_cbarg_t route) override;
void seal() override;
private:
/* vars to compute the Floyd algorithm. */
- int *predecessorTable_;
- double *costTable_;
- sg_platf_route_cbarg_t *linkTable_;
+ int* predecessorTable_;
+ double* costTable_;
+ sg_platf_route_cbarg_t* linkTable_;
};
-
-}}} // namespaces
+}
+}
+} // namespaces
#endif /* SURF_ROUTING_FLOYD_HPP_ */