X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/bf09b292c26915b00ceefc9f5d044d8dc7288636..b78dbc3f5d35226be390f1a1ca500af3c09d7022:/src/s4u/s4u_netzone.cpp diff --git a/src/s4u/s4u_netzone.cpp b/src/s4u/s4u_netzone.cpp index 1eec476116..e4f6989728 100644 --- a/src/s4u/s4u_netzone.cpp +++ b/src/s4u/s4u_netzone.cpp @@ -18,12 +18,12 @@ namespace s4u { simgrid::xbt::signal* link_list)> + std::vector& link_list)> NetZone::onRouteCreation; simgrid::xbt::signal NetZone::onCreation; simgrid::xbt::signal NetZone::onSeal; -NetZone::NetZone(NetZone* father, const char* name) : father_(father), name_(xbt_strdup(name)) +NetZone::NetZone(NetZone* father, std::string name) : father_(father), name_(name) { children_ = new std::vector(); } @@ -35,13 +35,12 @@ void NetZone::seal() NetZone::~NetZone() { - for (auto nz : *children_) + for (auto const& nz : *children_) delete nz; delete children_; - xbt_free(name_); } -std::unordered_map* NetZone::properties() +std::unordered_map* NetZone::getProperties() { return simgrid::simix::kernelImmediate([this] { return &properties_; @@ -49,7 +48,7 @@ std::unordered_map* NetZone::properties() } /** Retrieve the property value (or nullptr if not set) */ -const char* NetZone::property(const char* key) +const char* NetZone::getProperty(const char* key) { return properties_.at(key).c_str(); } @@ -60,37 +59,54 @@ void NetZone::setProperty(const char* key, const char* value) }); } -std::vector* NetZone::children() +/** @brief Returns the list of direct children (no grand-children) + * + * This function returns the internal copy of the children, not a copy. Don't mess with it! + */ +std::vector* NetZone::getChildren() { return children_; } -char* NetZone::name() + +const char* NetZone::getCname() const { - return name_; + return name_.c_str(); } -NetZone* NetZone::father() +NetZone* NetZone::getFather() { return father_; } -void NetZone::hosts(std::vector* whereto) +void NetZone::getHosts(std::vector* whereto) { - for (auto card : vertices_) { - s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->name()); + for (auto const& card : vertices_) { + s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->getName()); if (host != nullptr) whereto->push_back(host); } } +int NetZone::getHostCount() +{ + int count = 0; + for (auto const& card : vertices_) { + s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->getName()); + if (host != nullptr) + count++; + } + return count; +} + int NetZone::addComponent(kernel::routing::NetPoint* elm) { vertices_.push_back(elm); return vertices_.size() - 1; // The rank of the newly created object } -void NetZone::addRoute(sg_platf_route_cbarg_t /*route*/) +void NetZone::addRoute(sg_netpoint_t /*src*/, sg_netpoint_t /*dst*/, sg_netpoint_t /*gw_src*/, sg_netpoint_t /*gw_dst*/, + std::vector& /*link_list*/, bool /*symmetrical*/) { - xbt_die("NetZone '%s' does not accept new routes (wrong class).", name_); + xbt_die("NetZone '%s' does not accept new routes (wrong class).", name_.c_str()); } } }; // namespace simgrid::s4u