- virtual void getRouteAndLatency(NetCard *src, NetCard *dst, sg_platf_route_cbarg_t into, double *latency)=0;
- /** @brief retrieves the list of all routes of size 1 (of type src x dst x Link) */
- virtual xbt_dynar_t getOneLinkRoutes();
- std::vector<surf::Link*> *getBypassRoute(routing::NetCard *src, routing::NetCard *dst);
+ XBT_PUBLIC_CLASS AsImpl : public s4u::As
+ {
+ friend simgrid::kernel::routing::RoutingPlatf;
+
+ protected:
+ explicit AsImpl(As * father, const char* name);
+
+ public:
+ /** @brief Make an host within that AS */
+ simgrid::s4u::Host* createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount);
+
+ protected:
+ /**
+ * @brief Probe the routing path between two points that are local to the called AS.
+ *
+ * @param src where from
+ * @param dst where to
+ * @param into Container into which the traversed links and gateway informations should be pushed
+ * @param latency Accumulator in which the latencies should be added (caller must set it to 0)
+ */
+ virtual void getLocalRoute(NetCard * src, NetCard * dst, sg_platf_route_cbarg_t into, double* latency) = 0;
+ /** @brief retrieves the list of all routes of size 1 (of type src x dst x Link) */
+ /* returns whether we found a bypass path */
+ bool getBypassRoute(routing::NetCard * src, routing::NetCard * dst,
+ /* OUT */ std::vector<surf::Link*> * links, double* latency);