X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b78dbc3f5d35226be390f1a1ca500af3c09d7022..a1d99197df9d450ddb365e5a2a4108cb75904f5f:/src/s4u/s4u_netzone.cpp diff --git a/src/s4u/s4u_netzone.cpp b/src/s4u/s4u_netzone.cpp index e4f6989728..03ba50ec39 100644 --- a/src/s4u/s4u_netzone.cpp +++ b/src/s4u/s4u_netzone.cpp @@ -1,15 +1,13 @@ -/* Copyright (c) 2006-2017. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2006-2018. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "xbt/log.h" - +#include "simgrid/kernel/routing/NetPoint.hpp" +#include "simgrid/s4u/Engine.hpp" #include "simgrid/s4u/Host.hpp" #include "simgrid/s4u/NetZone.hpp" -#include "simgrid/simix.hpp" -#include "src/kernel/routing/NetPoint.hpp" -#include "src/surf/network_interface.hpp" // Link FIXME: move to proper header +#include "simgrid/zone.h" XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_netzone, "S4U Networking Zones"); @@ -68,7 +66,7 @@ std::vector* NetZone::getChildren() return children_; } -const char* NetZone::getCname() const +const char* NetZone::get_cname() const { return name_.c_str(); } @@ -80,7 +78,7 @@ NetZone* NetZone::getFather() void NetZone::getHosts(std::vector* whereto) { for (auto const& card : vertices_) { - s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->getName()); + s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->get_name()); if (host != nullptr) whereto->push_back(host); } @@ -90,7 +88,7 @@ int NetZone::getHostCount() { int count = 0; for (auto const& card : vertices_) { - s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->getName()); + s4u::Host* host = simgrid::s4u::Host::by_name_or_null(card->get_name()); if (host != nullptr) count++; } @@ -103,10 +101,55 @@ int NetZone::addComponent(kernel::routing::NetPoint* elm) return vertices_.size() - 1; // The rank of the newly created object } -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*/) +void NetZone::add_route(kernel::routing::NetPoint* /*src*/, kernel::routing::NetPoint* /*dst*/, + kernel::routing::NetPoint* /*gw_src*/, kernel::routing::NetPoint* /*gw_dst*/, + std::vector& /*link_list*/, bool /*symmetrical*/) { xbt_die("NetZone '%s' does not accept new routes (wrong class).", name_.c_str()); } + +} // namespace s4u +} // namespace simgrid + +/* **************************** Public C interface *************************** */ + +sg_netzone_t sg_zone_get_root() +{ + return simgrid::s4u::Engine::getInstance()->getNetRoot(); +} + +const char* sg_zone_get_name(sg_netzone_t netzone) +{ + return netzone->get_cname(); +} + +sg_netzone_t sg_zone_get_by_name(const char* name) +{ + return simgrid::s4u::Engine::getInstance()->getNetzoneByNameOrNull(name); +} + +void sg_zone_get_sons(sg_netzone_t netzone, xbt_dict_t whereto) +{ + for (auto const& elem : *netzone->getChildren()) { + 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); +} + +void sg_zone_set_property_value(sg_netzone_t netzone, const char* name, char* value) +{ + netzone->setProperty(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); + for (auto const& host : hosts) + xbt_dynar_push(whereto, &host); } -}; // namespace simgrid::s4u