Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[NS3] new callback to register sent bytes
authorLucas Schnorr <Lucas.Schnorr@imag.fr>
Fri, 2 Sep 2011 15:14:42 +0000 (17:14 +0200)
committerLucas Schnorr <Lucas.Schnorr@imag.fr>
Mon, 5 Sep 2011 09:08:12 +0000 (11:08 +0200)
src/surf/ns3/ns3_simulator.cc

index 4eface7..d731aa8 100644 (file)
@@ -19,6 +19,7 @@ NS3Sim SimulatorNS3;
 
 static void receive_callback(Ptr<Socket> localSocket);
 static void send_callback(Ptr<Socket> localSocket, uint32_t txSpace);
+static void datasent_callback(Ptr<Socket> localSocket, uint32_t dataSent);
 static void StartFlow(Ptr<Socket> sock,
     const char *to,
     uint16_t port_number);
@@ -146,6 +147,16 @@ static void send_callback(Ptr<Socket> localSocket, uint32_t txSpace){
 
 }
 
+static void datasent_callback(Ptr<Socket> localSocket, uint32_t dataSent){
+  Address addr;
+  localSocket->GetSockName (addr);
+  InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (addr);
+  MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
+  mysocket->sentBytes += dataSent;
+  //cout << "[" << Simulator::Now ().GetSeconds() << "] " << "DATASENT [" << mysocket->totalBytes << "bytes],  from: " << iaddr.GetIpv4 () << " port: " << iaddr.GetPort () << " dataSent " << dataSent <<endl;
+}
+
+
 static void StartFlow(Ptr<Socket> sock,
     const char *to,
     uint16_t port_number)
@@ -157,4 +168,5 @@ static void StartFlow(Ptr<Socket> sock,
   sock->Connect(serverAddr);
   sock->SetSendCallback (MakeCallback (&send_callback));
   sock->SetRecvCallback (MakeCallback (&receive_callback));
+  sock->SetDataSentCallback (MakeCallback (&datasent_callback));
 }