X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7a5cd0c637286493293fa236b002fb3ce03e1469..5ed37babb2fa9097abe82df299c0aa259ed84d5a:/src/surf/network_ns3.cpp?ds=sidebyside diff --git a/src/surf/network_ns3.cpp b/src/surf/network_ns3.cpp index 9f8300862e..6e84927851 100644 --- a/src/surf/network_ns3.cpp +++ b/src/surf/network_ns3.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2023. 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. */ @@ -102,7 +102,7 @@ static void zoneCreation_cb(simgrid::s4u::NetZone const& zone) wifi.SetStandard(ns3::WIFI_STANDARD_80211n_5GHZ); #else wifi.SetStandard(ns3::WIFI_STANDARD_80211n); - wifiPhy.Set ("ChannelSettings", StringValue ("{0, 0, WIFI_PHY_BAND_5GHZ, 0}")); + wifiPhy.Set ("ChannelSettings", ns3::StringValue ("{0, 0, BAND_5GHZ, 0}")); #endif std::string ssid = wifizone->get_name(); @@ -145,7 +145,7 @@ static void zoneCreation_cb(simgrid::s4u::NetZone const& zone) double angle = 0; auto nb_stations = static_cast(wifizone->get_all_hosts().size() - 1); double step = 2 * M_PI / nb_stations; - for (auto station_host : wifizone->get_all_hosts()) { + for (const auto* station_host : wifizone->get_all_hosts()) { station_netpoint_ns3 = station_host->get_netpoint()->extension(); if (station_netpoint_ns3 == access_point_netpoint_ns3) continue; @@ -308,8 +308,7 @@ static simgrid::config::Flag ns3_seed( }); namespace simgrid { -namespace kernel { -namespace resource { +namespace kernel::resource { NetworkNS3Model::NetworkNS3Model(const std::string& name) : NetworkModel(name) { @@ -322,8 +321,7 @@ NetworkNS3Model::NetworkNS3Model(const std::string& name) : NetworkModel(name) ns3::Config::SetDefault("ns3::TcpSocket::DelAckCount", ns3::UintegerValue(1)); ns3::Config::SetDefault("ns3::TcpSocketBase::Timestamp", ns3::BooleanValue(false)); - auto const& TcpProtocol = ns3_tcp_model.get(); - if (TcpProtocol == "default") { + if (auto const& TcpProtocol = ns3_tcp_model.get(); TcpProtocol == "default") { /* nothing to do */ } else if (TcpProtocol == "Reno" || TcpProtocol == "NewReno" || TcpProtocol == "Tahoe") { @@ -370,7 +368,7 @@ StandardLinkImpl* NetworkNS3Model::create_wifi_link(const std::string& name, con return link; } -Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) +Action* NetworkNS3Model::communicate(s4u::Host* src, s4u::Host* dst, double size, double rate, bool /*streamed*/) { xbt_assert(rate == -1, "Communication over ns-3 links cannot specify a specific rate. Please use -1 as a value instead of %f.", @@ -412,10 +410,7 @@ void NetworkNS3Model::update_actions_state(double now, double delta) { static std::vector socket_to_destroy; - std::string ns3_socket; - for (const auto& elm : flow_from_sock) { - ns3_socket = elm.first; - SgFlow* sgFlow = elm.second; + for (const auto& [ns3_socket, sgFlow] : flow_from_sock) { NetworkNS3Action* action = sgFlow->action_; XBT_DEBUG("Processing flow %p (socket %s, action %p)", sgFlow, ns3_socket.c_str(), action); // Because NS3 stops as soon as a flow is finished, the other flows that ends at the same time may remains in an @@ -451,7 +446,7 @@ void NetworkNS3Model::update_actions_state(double now, double delta) } while (not socket_to_destroy.empty()) { - ns3_socket = socket_to_destroy.back(); + std::string ns3_socket = socket_to_destroy.back(); socket_to_destroy.pop_back(); SgFlow* flow = flow_from_sock.at(ns3_socket); if (XBT_LOG_ISENABLED(res_ns3, xbt_log_priority_debug)) { @@ -508,8 +503,7 @@ NetworkNS3Action::NetworkNS3Action(Model* model, double totalBytes, s4u::Host* s // ns-3 fails when src = dst, so avoid the problem by considering that communications are infinitely fast on the // loopback that does not exists if (src == dst) { - static bool warned = false; - if (not warned) { + if (static bool warned = false; not warned) { XBT_WARN("Sending from a host %s to itself is not supported by ns-3. Every such communication finishes " "immediately upon startup.", src->get_cname()); @@ -545,8 +539,8 @@ NetworkNS3Action::NetworkNS3Action(Model* model, double totalBytes, s4u::Host* s XBT_DEBUG("Create socket %s for a flow of %.0f Bytes from %s to %s with Interface %s", transform_socket_ptr(sock).c_str(), totalBytes, src->get_cname(), dst->get_cname(), addr.c_str()); - flow_from_sock.insert({transform_socket_ptr(sock), new SgFlow(static_cast(totalBytes), this)}); - sink_from_sock.insert({transform_socket_ptr(sock), apps}); + flow_from_sock.try_emplace(transform_socket_ptr(sock), new SgFlow(static_cast(totalBytes), this)); + sink_from_sock.try_emplace(transform_socket_ptr(sock), apps); sock->Bind(ns3::InetSocketAddress(port_number)); ns3::Simulator::ScheduleNow(&start_flow, sock, addr.c_str(), port_number); @@ -575,8 +569,7 @@ void NetworkNS3Action::update_remains_lazy(double /*now*/) THROW_IMPOSSIBLE; } -} // namespace resource -} // namespace kernel +} // namespace kernel::resource ns3::Ptr get_ns3node_from_sghost(const simgrid::s4u::Host* host) {