-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(), dst->name());
-
- AsImpl::getRouteRecursive(src, dst, route, latency);
-}
-
-static xbt_dynar_t _recursiveGetOneLinkRoutes(AsImpl *as)
-{
- xbt_dynar_t ret = xbt_dynar_new(sizeof(Onelink*), xbt_free_f);
-
- //adding my one link routes
- xbt_dynar_t onelink_mine = as->getOneLinkRoutes();
- if (onelink_mine)
- xbt_dynar_merge(&ret,&onelink_mine);
-
- //recursing
- char *key;
- xbt_dict_cursor_t cursor = nullptr;
- AsImpl *rc_child;
- xbt_dict_foreach(as->children(), cursor, key, rc_child) {
- xbt_dynar_t onelink_child = _recursiveGetOneLinkRoutes(rc_child);
- if (onelink_child)
- xbt_dynar_merge(&ret,&onelink_child);
- }
- return ret;
-}
-
-xbt_dynar_t RoutingPlatf::getOneLinkRoutes(){
- return _recursiveGetOneLinkRoutes(root_);
-}
-
-}}}
-
-/** @brief create the root AS */
-void routing_model_create(Link *loopback)
-{
- routing_platf = new simgrid::kernel::routing::RoutingPlatf(loopback);
-}
-