X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7c6bbb40c161610ef1a8096ec469e8b9a703de0a..4cedf6f3e1b53c5de2a19a293418a04c5d4d777f:/src/s4u/s4u_Netzone.cpp diff --git a/src/s4u/s4u_Netzone.cpp b/src/s4u/s4u_Netzone.cpp index 5eb5139489..d361ce0b65 100644 --- a/src/s4u/s4u_Netzone.cpp +++ b/src/s4u/s4u_Netzone.cpp @@ -38,17 +38,17 @@ NetZone::~NetZone() delete children_; } -std::unordered_map* NetZone::getProperties() +std::unordered_map* NetZone::get_properties() { return simgrid::simix::simcall([this] { return &properties_; }); } /** Retrieve the property value (or nullptr if not set) */ -const char* NetZone::getProperty(const char* key) +const char* NetZone::get_property(const char* key) { return properties_.at(key).c_str(); } -void NetZone::setProperty(const char* key, const char* value) +void NetZone::set_property(const char* key, const char* value) { simgrid::simix::simcall([this, key, value] { properties_[key] = value; }); } @@ -57,7 +57,7 @@ void NetZone::setProperty(const char* key, const char* value) * * This function returns the internal copy of the children, not a copy. Don't mess with it! */ -std::vector* NetZone::getChildren() +std::vector* NetZone::get_children() { return children_; } @@ -71,6 +71,22 @@ NetZone* NetZone::get_father() return father_; } +/** @brief Returns the list of the hosts found in this NetZone (not recursively) + * + * Only the hosts that are directly contained in this NetZone are retrieved, + * not the ones contained in sub-netzones. + */ +std::vector NetZone::get_all_hosts() +{ + std::vector res; + for (auto const& card : vertices_) { + s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->get_name()); + if (host != nullptr) + res.push_back(host); + } + return res; +} + void NetZone::getHosts(std::vector* whereto) { for (auto const& card : vertices_) { @@ -80,7 +96,7 @@ void NetZone::getHosts(std::vector* whereto) } } -int NetZone::getHostCount() +int NetZone::get_host_count() { int count = 0; for (auto const& card : vertices_) { @@ -91,7 +107,7 @@ int NetZone::getHostCount() return count; } -int NetZone::addComponent(kernel::routing::NetPoint* elm) +int NetZone::add_component(kernel::routing::NetPoint* elm) { vertices_.push_back(elm); return vertices_.size() - 1; // The rank of the newly created object @@ -126,26 +142,25 @@ sg_netzone_t sg_zone_get_by_name(const char* name) void sg_zone_get_sons(sg_netzone_t netzone, xbt_dict_t whereto) { - for (auto const& elem : *netzone->getChildren()) { + for (auto const& elem : *netzone->get_children()) { xbt_dict_set(whereto, elem->get_cname(), static_cast(elem), nullptr); } } const char* sg_zone_get_property_value(sg_netzone_t netzone, const char* name) { - return netzone->getProperty(name); + return netzone->get_property(name); } void sg_zone_set_property_value(sg_netzone_t netzone, const char* name, char* value) { - netzone->setProperty(name, value); + netzone->set_property(name, value); } void sg_zone_get_hosts(sg_netzone_t netzone, xbt_dynar_t whereto) { /* converts vector to dynar */ - std::vector hosts; - netzone->getHosts(&hosts); + std::vector hosts = netzone->get_all_hosts(); for (auto const& host : hosts) xbt_dynar_push(whereto, &host); }