-namespace simgrid {
-namespace kernel {
-namespace routing {
-
-/**
- * \brief Find a route between hosts
- *
- * \param src the network_element_t for src host
- * \param dst the network_element_t for dst host
- * \param route where to store the list of links.
- * If *route=nullptr, create a short lived dynar. Else, fill the provided dynar
- * \param latency where to store the latency experienced on the path (or nullptr if not interested)
- * It is the caller responsibility to initialize latency to 0 (we add to provided route)
- * \pre route!=nullptr
- *
- * walk through the routing components tree and find a route between hosts
- * by calling each "get_route" function in each routing component.
- */
-void RoutingPlatf::getRouteAndLatency(NetCard *src, NetCard *dst, std::vector<Link*> * route, double *latency)
-{
- XBT_DEBUG("getRouteAndLatency from %s to %s", src->name().c_str(), dst->name().c_str());
-
- AsImpl::getRouteRecursive(src, dst, route, latency);
-}
-
-static void _recursiveGetOneLinkRoutes(AsImpl* as, xbt_dynar_t accumulator)
-{
- //adding my one link routes
- as->getOneLinkRoutes(accumulator);
-
- //recursing
- char *key;
- xbt_dict_cursor_t cursor = nullptr;
- AsImpl *rc_child;
- xbt_dict_foreach(as->children(), cursor, key, rc_child) {
- _recursiveGetOneLinkRoutes(rc_child, accumulator);
- }
-}
-
-xbt_dynar_t RoutingPlatf::getOneLinkRoutes(){
- xbt_dynar_t res = xbt_dynar_new(sizeof(Onelink*), xbt_free_f);
- _recursiveGetOneLinkRoutes(root_, res);
- return res;
-}
-
-}}}
-