+ 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;
+}
+int 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;
+}
+
+s4u::Link* NetZoneImpl::create_link(const std::string& name, const std::vector<double>& bandwidths, double latency,
+ s4u::Link::SharingPolicy policy,
+ const std::unordered_map<std::string, std::string>* props)
+{
+ static double last_warned_latency = sg_surf_precision;
+ if (latency != 0.0 && latency < last_warned_latency) {
+ XBT_WARN("Latency for link %s is smaller than surf/precision (%g < %g)."
+ " For more accuracy, consider setting \"--cfg=surf/precision:%g\".",
+ name.c_str(), latency, sg_surf_precision, latency);
+ last_warned_latency = latency;
+ }
+
+ auto* l = surf_network_model->create_link(name, bandwidths, latency, policy);
+
+ if (props)
+ l->set_properties(*props);
+
+ return l->get_iface();
+}
+s4u::Host* NetZoneImpl::create_host(const std::string& name, const std::vector<double>& speed_per_pstate,
+ int coreAmount, const std::unordered_map<std::string, std::string>* props)
+{
+ auto* res = new s4u::Host(name);