X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/21fe278c8460849931b37ccde22e944edec46f71..cf6a1d5f1eddea2b377415ab57c5185058488269:/src/surf/ns3/ns3_simulator.cpp diff --git a/src/surf/ns3/ns3_simulator.cpp b/src/surf/ns3/ns3_simulator.cpp index 72171b31f2..f785c8556b 100644 --- a/src/surf/ns3/ns3_simulator.cpp +++ b/src/surf/ns3/ns3_simulator.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2021. 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. */ @@ -16,13 +16,13 @@ #include -std::map flow_from_sock; // ns3::sock -> SgFlow -std::map sink_from_sock; // ns3::sock -> ns3::PacketSink +std::map> flow_from_sock; // ns3::sock -> SgFlow +std::map> sink_from_sock; // ns3::sock -> ns3::PacketSink static void receive_callback(ns3::Ptr socket); static void datasent_cb(ns3::Ptr socket, uint32_t dataSent); -XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ns3); +XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(res_ns3); SgFlow::SgFlow(uint32_t totalBytes, simgrid::kernel::resource::NetworkNS3Action* action) { @@ -48,7 +48,7 @@ static void receive_callback(ns3::Ptr socket) SgFlow* flow = getFlowFromSocket(socket); XBT_DEBUG("received on F[%p, total: %u, remain: %u]", flow, flow->total_bytes_, flow->remaining_); - if (flow->finished_ == false) { + if (not flow->finished_) { flow->finished_ = true; XBT_DEBUG("recv_cb of F[%p, %p, %u]", flow, flow->action_, flow->total_bytes_); XBT_DEBUG("Stop simulator at %f seconds", ns3::Simulator::Now().GetSeconds()); @@ -67,15 +67,15 @@ static void send_cb(ns3::Ptr sock, uint32_t txSpace) /* While not all is buffered and there remain space in the buffers */ while (flow->buffered_bytes_ < flow->total_bytes_ && sock->GetTxAvailable() > 0) { - // Send at most 1040 bytes (data size in a TCP packet), as ns-3 seems to not split correctly by itself uint32_t toWrite = std::min({flow->remaining_, sock->GetTxAvailable(), std::uint32_t(1040)}); + if (toWrite == 0) { // buffer full XBT_DEBUG("%f: buffer full on flow %p (still %u to go)", ns3::Simulator::Now().GetSeconds(), flow, flow->remaining_); return; } - int amountSent = sock->Send(0, toWrite, 0); + int amountSent = sock->Send(nullptr, toWrite, 0); xbt_assert(amountSent > 0, "Since TxAvailable>0, amountSent should also >0"); flow->buffered_bytes_ += amountSent;