X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5aede30a76a1ec2fe6686ddfe8f1c9f7771af026..877fd76c223fe2fba051129f3ba0339bb5566bce:/src/surf/network_ns3.cpp diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index 48d8d1e83d..f0ec983771 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -14,12 +14,14 @@ #include "ns3/ns3_simulator.h" #include "network_ns3.hpp" -#include "src/surf/HostImpl.hpp" -#include "src/surf/surf_private.h" #include "simgrid/sg_config.h" #include "src/instr/instr_private.h" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals +#include "src/kernel/routing/NetCard.hpp" +#include "src/surf/HostImpl.hpp" +#include "src/surf/surf_private.h" #include "simgrid/s4u/As.hpp" +#include "simgrid/s4u/engine.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ns3, surf, "Logging specific to the SURF network NS3 module"); @@ -107,14 +109,14 @@ static void create_ns3_topology(void) xbt_dynar_shrink(IPV4addr,0); //get the onelinks from the parsed platform - xbt_dynar_t onelink_routes = routing_platf->getOneLinkRoutes(); + std::vector onelink_routes; + static_cast(simgrid::s4u::Engine::instance()->rootAs()) + ->getOneLinkRoutes(&onelink_routes); std::unordered_set already_seen = std::unordered_set(); - XBT_DEBUG("There is %ld one-link routes",onelink_routes->used); - simgrid::kernel::routing::Onelink *onelink; - unsigned int iter; - xbt_dynar_foreach(onelink_routes, iter, onelink) { + XBT_DEBUG("There is %ld one-link routes", onelink_routes.size()); + for (simgrid::kernel::routing::Onelink* onelink : onelink_routes) { const char* src = onelink->src_->name().c_str(); const char* dst = onelink->dst_->name().c_str(); simgrid::surf::LinkNS3 *link = static_cast(onelink->link_); @@ -174,7 +176,6 @@ namespace surf { NetworkNS3Model::NetworkNS3Model() : NetworkModel() { ns3_initialize(ns3_tcp_model.get().c_str()); - routing_model_create(nullptr); simgrid::s4u::Host::onCreation.connect(ns3_add_host); simgrid::kernel::routing::netcardCreatedCallbacks.connect(ns3_add_netcard); simgrid::surf::on_cluster.connect (&parse_ns3_add_cluster); @@ -193,10 +194,10 @@ NetworkNS3Model::~NetworkNS3Model() { xbt_dict_free(&flowFromSock); } -Link* NetworkNS3Model::createLink(const char *name, double bandwidth, double latency, e_surf_link_sharing_policy_t policy, - xbt_dict_t properties){ - - return new LinkNS3(this, name, properties, bandwidth, latency); +Link* NetworkNS3Model::createLink(const char* name, double bandwidth, double latency, + e_surf_link_sharing_policy_t policy) +{ + return new LinkNS3(this, name, bandwidth, latency); } Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) @@ -253,7 +254,7 @@ void NetworkNS3Model::updateActionsState(double now, double delta) std::vector route = std::vector(); - routing_platf->getRouteAndLatency(action->src_->pimpl_netcard, action->dst_->pimpl_netcard, &route, nullptr); + action->src_->routeTo(action->dst_, &route, nullptr); for (auto link : route) TRACE_surf_link_set_utilization (link->getName(), action->getCategory(), (data_delta_sent)/delta, now-delta, delta); @@ -283,8 +284,8 @@ void NetworkNS3Model::updateActionsState(double now, double delta) * Resource * ************/ -LinkNS3::LinkNS3(NetworkNS3Model *model, const char *name, xbt_dict_t props, double bandwidth, double latency) - : Link(model, name, props) +LinkNS3::LinkNS3(NetworkNS3Model* model, const char* name, double bandwidth, double latency) + : Link(model, name, nullptr) { bandwidth_.peak = bandwidth; latency_.peak = latency;