> [ 0.000000] (maestro@) bob_cluster
> [ 0.000000] (maestro@) node-0.simgrid.org
> [ 0.000000] (maestro@) node-1.simgrid.org
-> [ 0.000000] (maestro@) node-2.simgrid.org
-> [ 0.000000] (maestro@) node-3.simgrid.org
-> [ 0.000000] (maestro@) node-4.simgrid.org
-> [ 0.000000] (maestro@) node-5.simgrid.org
-> [ 0.000000] (maestro@) node-6.simgrid.org
-> [ 0.000000] (maestro@) node-7.simgrid.org
-> [ 0.000000] (maestro@) node-8.simgrid.org
-> [ 0.000000] (maestro@) node-9.simgrid.org
> [ 0.000000] (maestro@) node-10.simgrid.org
+> [ 0.000000] (maestro@) node-100.simgrid.org
+> [ 0.000000] (maestro@) node-101.simgrid.org
+> [ 0.000000] (maestro@) node-102.simgrid.org
+> [ 0.000000] (maestro@) node-103.simgrid.org
+> [ 0.000000] (maestro@) node-104.simgrid.org
+> [ 0.000000] (maestro@) node-105.simgrid.org
+> [ 0.000000] (maestro@) node-106.simgrid.org
+> [ 0.000000] (maestro@) node-107.simgrid.org
+> [ 0.000000] (maestro@) node-108.simgrid.org
+> [ 0.000000] (maestro@) node-109.simgrid.org
> [ 0.000000] (maestro@) node-11.simgrid.org
+> [ 0.000000] (maestro@) node-110.simgrid.org
+> [ 0.000000] (maestro@) node-111.simgrid.org
+> [ 0.000000] (maestro@) node-112.simgrid.org
+> [ 0.000000] (maestro@) node-113.simgrid.org
+> [ 0.000000] (maestro@) node-114.simgrid.org
+> [ 0.000000] (maestro@) node-115.simgrid.org
+> [ 0.000000] (maestro@) node-116.simgrid.org
+> [ 0.000000] (maestro@) node-117.simgrid.org
+> [ 0.000000] (maestro@) node-118.simgrid.org
+> [ 0.000000] (maestro@) node-119.simgrid.org
> [ 0.000000] (maestro@) node-12.simgrid.org
> [ 0.000000] (maestro@) node-13.simgrid.org
> [ 0.000000] (maestro@) node-14.simgrid.org
> [ 0.000000] (maestro@) node-17.simgrid.org
> [ 0.000000] (maestro@) node-18.simgrid.org
> [ 0.000000] (maestro@) node-19.simgrid.org
+> [ 0.000000] (maestro@) node-2.simgrid.org
> [ 0.000000] (maestro@) node-20.simgrid.org
> [ 0.000000] (maestro@) node-21.simgrid.org
> [ 0.000000] (maestro@) node-22.simgrid.org
> [ 0.000000] (maestro@) node-27.simgrid.org
> [ 0.000000] (maestro@) node-28.simgrid.org
> [ 0.000000] (maestro@) node-29.simgrid.org
+> [ 0.000000] (maestro@) node-3.simgrid.org
> [ 0.000000] (maestro@) node-30.simgrid.org
> [ 0.000000] (maestro@) node-31.simgrid.org
> [ 0.000000] (maestro@) node-32.simgrid.org
> [ 0.000000] (maestro@) node-37.simgrid.org
> [ 0.000000] (maestro@) node-38.simgrid.org
> [ 0.000000] (maestro@) node-39.simgrid.org
+> [ 0.000000] (maestro@) node-4.simgrid.org
> [ 0.000000] (maestro@) node-40.simgrid.org
> [ 0.000000] (maestro@) node-41.simgrid.org
> [ 0.000000] (maestro@) node-42.simgrid.org
> [ 0.000000] (maestro@) node-47.simgrid.org
> [ 0.000000] (maestro@) node-48.simgrid.org
> [ 0.000000] (maestro@) node-49.simgrid.org
+> [ 0.000000] (maestro@) node-5.simgrid.org
> [ 0.000000] (maestro@) node-50.simgrid.org
> [ 0.000000] (maestro@) node-51.simgrid.org
> [ 0.000000] (maestro@) node-52.simgrid.org
> [ 0.000000] (maestro@) node-57.simgrid.org
> [ 0.000000] (maestro@) node-58.simgrid.org
> [ 0.000000] (maestro@) node-59.simgrid.org
+> [ 0.000000] (maestro@) node-6.simgrid.org
> [ 0.000000] (maestro@) node-60.simgrid.org
> [ 0.000000] (maestro@) node-61.simgrid.org
> [ 0.000000] (maestro@) node-62.simgrid.org
> [ 0.000000] (maestro@) node-67.simgrid.org
> [ 0.000000] (maestro@) node-68.simgrid.org
> [ 0.000000] (maestro@) node-69.simgrid.org
+> [ 0.000000] (maestro@) node-7.simgrid.org
> [ 0.000000] (maestro@) node-70.simgrid.org
> [ 0.000000] (maestro@) node-71.simgrid.org
> [ 0.000000] (maestro@) node-72.simgrid.org
> [ 0.000000] (maestro@) node-77.simgrid.org
> [ 0.000000] (maestro@) node-78.simgrid.org
> [ 0.000000] (maestro@) node-79.simgrid.org
+> [ 0.000000] (maestro@) node-8.simgrid.org
> [ 0.000000] (maestro@) node-80.simgrid.org
> [ 0.000000] (maestro@) node-81.simgrid.org
> [ 0.000000] (maestro@) node-82.simgrid.org
> [ 0.000000] (maestro@) node-87.simgrid.org
> [ 0.000000] (maestro@) node-88.simgrid.org
> [ 0.000000] (maestro@) node-89.simgrid.org
+> [ 0.000000] (maestro@) node-9.simgrid.org
> [ 0.000000] (maestro@) node-90.simgrid.org
> [ 0.000000] (maestro@) node-91.simgrid.org
> [ 0.000000] (maestro@) node-92.simgrid.org
> [ 0.000000] (maestro@) node-97.simgrid.org
> [ 0.000000] (maestro@) node-98.simgrid.org
> [ 0.000000] (maestro@) node-99.simgrid.org
-> [ 0.000000] (maestro@) node-100.simgrid.org
-> [ 0.000000] (maestro@) node-101.simgrid.org
-> [ 0.000000] (maestro@) node-102.simgrid.org
-> [ 0.000000] (maestro@) node-103.simgrid.org
-> [ 0.000000] (maestro@) node-104.simgrid.org
-> [ 0.000000] (maestro@) node-105.simgrid.org
-> [ 0.000000] (maestro@) node-106.simgrid.org
-> [ 0.000000] (maestro@) node-107.simgrid.org
-> [ 0.000000] (maestro@) node-108.simgrid.org
-> [ 0.000000] (maestro@) node-109.simgrid.org
-> [ 0.000000] (maestro@) node-110.simgrid.org
-> [ 0.000000] (maestro@) node-111.simgrid.org
-> [ 0.000000] (maestro@) node-112.simgrid.org
-> [ 0.000000] (maestro@) node-113.simgrid.org
-> [ 0.000000] (maestro@) node-114.simgrid.org
-> [ 0.000000] (maestro@) node-115.simgrid.org
-> [ 0.000000] (maestro@) node-116.simgrid.org
-> [ 0.000000] (maestro@) node-117.simgrid.org
-> [ 0.000000] (maestro@) node-118.simgrid.org
-> [ 0.000000] (maestro@) node-119.simgrid.org
> [ 0.000000] (maestro@) bob_cluster' dragonfly topology:
> [ 0.000000] (maestro@) 0: (0, 0, 0, 0)
> [ 0.000000] (maestro@) 1: (0, 0, 0, 1)
*/
std::vector<s4u::Host*> NetZoneImpl::get_all_hosts() const
{
- std::vector<s4u::Host*> res;
- for (auto const& card : get_vertices()) {
- s4u::Host* host = s4u::Host::by_name_or_null(card->get_name());
- if (host != nullptr)
- res.push_back(host);
- }
- return res;
+ return s4u::Engine::get_instance()->get_filtered_hosts(
+ [this](const s4u::Host* host) { return host->get_impl()->get_englobing_zone() == this; });
}
-int NetZoneImpl::get_host_count() const
+size_t NetZoneImpl::get_host_count() const
{
- int count = 0;
- for (auto const& card : get_vertices()) {
- const s4u::Host* host = s4u::Host::by_name_or_null(card->get_name());
- if (host != nullptr)
- count++;
- }
- return count;
+ return get_all_hosts().size();
+}
+
+std::vector<s4u::Link*> NetZoneImpl::get_all_links() const
+{
+ return s4u::Engine::get_instance()->get_filtered_links(
+ [this](const s4u::Link* link) { return link->get_impl()->get_englobing_zone() == this; });
+}
+
+size_t NetZoneImpl::get_link_count() const
+{
+ return get_all_links().size();
}
s4u::Host* NetZoneImpl::create_host(const std::string& name, const std::vector<double>& speed_per_pstate)
"Impossible to create host: %s. Invalid CPU model: nullptr. Have you set the parent of this NetZone: %s?",
name.c_str(), get_cname());
xbt_assert(not sealed_, "Impossible to create host: %s. NetZone %s already sealed", name.c_str(), get_cname());
- auto* res = (new resource::HostImpl(name))->get_iface();
+ auto* res = (new resource::HostImpl(name))->set_englobing_zone(this)->get_iface();
res->set_netpoint((new NetPoint(name, NetPoint::Type::Host))->set_englobing_zone(this));
cpu_model_pm_->create_cpu(res, speed_per_pstate);
"Impossible to create link: %s. Invalid network model: nullptr. Have you set the parent of this NetZone: %s?",
name.c_str(), get_cname());
xbt_assert(not sealed_, "Impossible to create link: %s. NetZone %s already sealed", name.c_str(), get_cname());
- return network_model_->create_link(name, bandwidths)->get_iface();
+ return network_model_->create_link(name, bandwidths)->set_englobing_zone(this)->get_iface();
}
s4u::SplitDuplexLink* NetZoneImpl::create_split_duplex_link(const std::string& name,
name.c_str(), get_cname());
xbt_assert(not sealed_, "Impossible to create link: %s. NetZone %s already sealed", name.c_str(), get_cname());
- auto* link_up = network_model_->create_link(name + "_UP", bandwidths);
- auto* link_down = network_model_->create_link(name + "_DOWN", bandwidths);
+ auto* link_up = network_model_->create_link(name + "_UP", bandwidths)->set_englobing_zone(this);
+ auto* link_down = network_model_->create_link(name + "_DOWN", bandwidths)->set_englobing_zone(this);
auto link = std::make_unique<resource::SplitDuplexLinkImpl>(name, link_up, link_down);
auto* link_iface = link->get_iface();
EngineImpl::get_instance()->add_split_duplex_link(name, std::move(link));