+ for (auto const& value1 : netpoints) { // Routes from router
+ if (not value1->is_router())
+ continue;
+ for (auto const& value2 : netpoints) { // to router
+ if (not value2->is_router())
+ continue;
+ std::vector<simgrid::kernel::resource::StandardLinkImpl*> route;
+ simgrid::kernel::routing::NetZoneImpl::get_global_route(value1, value2, route, nullptr);
+ if (route.empty())
+ continue;
+ ss << " <route src=\"" << value1->get_name() << "\" dst=\"" << value2->get_name() << "\">\n ";
+ for (auto const& link : route)
+ ss << "<link_ctn id=\"" << link->get_name() << "\"/>";
+ ss << "\n </route>\n";
+ }
+ for (auto const* dst_host : hosts) { // Routes to host
+ ss << " <route src=\"" << value1->get_name() << "\" dst=\"" << dst_host->get_name() << "\">\n ";
+ std::vector<simgrid::kernel::resource::StandardLinkImpl*> route;
+ const simgrid::kernel::routing::NetPoint* netcardDst = dst_host->get_netpoint();
+ simgrid::kernel::routing::NetZoneImpl::get_global_route(value1, netcardDst, route, nullptr);
+ for (auto const& link : route)
+ ss << "<link_ctn id=\"" << link->get_name() << "\"/>";
+ ss << "\n </route>\n";
+ }
+ }
+}
+std::string Engine::flatify_platform() const
+{
+ std::string version = "4.1";
+ std::stringstream ss;
+
+ ss << "<?xml version='1.0'?>\n";
+ ss << "<!DOCTYPE platform SYSTEM \"https://simgrid.org/simgrid.dtd\">\n";
+ ss << "<platform version=\"" << version << "\">\n";
+ ss << "<zone id=\"" << get_netzone_root()->get_name() << "\" routing=\"Full\">\n";
+
+ flatify_hosts(*this, ss);
+ flatify_links(*this, ss);
+ flatify_routes(*this, ss);
+
+ ss << "</zone>\n";
+ ss << "</platform>\n";
+ return ss.str();