#include "src/kernel/EngineImpl.hpp"
#include "src/kernel/resource/DiskImpl.hpp"
#include "src/kernel/resource/HostImpl.hpp"
+#include "src/kernel/resource/StandardLinkImpl.hpp"
#include "src/kernel/resource/profile/Profile.hpp"
#include "src/kernel/xml/platf.hpp"
#include "src/kernel/xml/platf_private.hpp"
simgrid_parse_open(file);
/* Do the actual parsing */
- simgrid_parse();
+ simgrid_parse(true);
simgrid_parse_close();
}
/*************************************************************************************************/
/** @brief Auxiliary function to create hosts */
-static std::pair<simgrid::kernel::routing::NetPoint*, simgrid::kernel::routing::NetPoint*>
+static simgrid::s4u::Host*
sg_platf_cluster_create_host(const simgrid::kernel::routing::ClusterCreationArgs* cluster, simgrid::s4u::NetZone* zone,
const std::vector<unsigned long>& /*coord*/, unsigned long id)
{
std::string host_id = cluster->prefix + std::to_string(cluster->radicals[id]) + cluster->suffix;
XBT_DEBUG("Cluster: creating host=%s speed=%f", host_id.c_str(), cluster->speeds.front());
- const simgrid::s4u::Host* host = zone->create_host(host_id, cluster->speeds)
- ->set_core_count(cluster->core_amount)
- ->set_properties(cluster->properties)
- ->seal();
- return std::make_pair(host->get_netpoint(), nullptr);
+ simgrid::s4u::Host* host = zone->create_host(host_id, cluster->speeds)
+ ->set_core_count(cluster->core_amount)
+ ->set_properties(cluster->properties);
+ return host;
}
/** @brief Auxiliary function to create loopback links */
using simgrid::kernel::routing::FatTreeZone;
using simgrid::kernel::routing::TorusZone;
- auto set_host = std::bind(sg_platf_cluster_create_host, cluster, _1, _2, _3);
+ std::function<simgrid::s4u::ClusterCallbacks::ClusterHostCb> set_host =
+ std::bind(sg_platf_cluster_create_host, cluster, _1, _2, _3);
std::function<simgrid::s4u::ClusterCallbacks::ClusterLinkCb> set_loopback{};
std::function<simgrid::s4u::ClusterCallbacks::ClusterLinkCb> set_limiter{};
->set_latency(cluster->loopback_lat)
->seal();
- zone->add_route(host->get_netpoint(), host->get_netpoint(), nullptr, nullptr,
- {simgrid::s4u::LinkInRoute(loopback)});
+ zone->add_route(host, host, {simgrid::s4u::LinkInRoute(loopback)});
}
// add a limiter link (shared link to account for maximal bandwidth of the node)
if (backbone)
links.emplace_back(backbone);
- zone->add_route(host->get_netpoint(), nullptr, nullptr, nullptr, links, true);
+ zone->add_route(host, nullptr, links, true);
}
// Add a router.
XBT_DEBUG("<router id=\"%s\"/>", cluster->router_id.c_str());
if (cluster->router_id.empty())
cluster->router_id = cluster->prefix + cluster->id + "_router" + cluster->suffix;
- auto* router = zone->create_router(cluster->router_id);
- zone->add_route(router, nullptr, nullptr, nullptr, {});
+ zone->create_router(cluster->router_id);
simgrid::kernel::routing::on_cluster_creation(*cluster);
}
const simgrid::kernel::routing::HostLinkCreationArgs* hostlink,
const simgrid::s4u::Link* backbone)
{
- const auto engine = simgrid::s4u::Engine::get_instance();
- auto netpoint = engine->host_by_name(hostlink->id)->get_netpoint();
+ const auto* engine = simgrid::s4u::Engine::get_instance();
+ auto* netpoint = engine->host_by_name(hostlink->id)->get_netpoint();
xbt_assert(netpoint, "Host '%s' not found!", hostlink->id.c_str());
- const auto linkUp = engine->link_by_name_or_null(hostlink->link_up);
- const auto linkDown = engine->link_by_name_or_null(hostlink->link_down);
+ const auto* linkUp = engine->link_by_name_or_null(hostlink->link_up);
+ const auto* linkDown = engine->link_by_name_or_null(hostlink->link_down);
xbt_assert(linkUp, "Link '%s' not found!", hostlink->link_up.c_str());
xbt_assert(linkDown, "Link '%s' not found!", hostlink->link_down.c_str());