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, RouteCreationArgs* 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_;
+ RouteCreationArgs** linkTable_;
};
}
}