Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[NS3] rewriting receive_callback to mark a flow finished only if it has not done...
authorLucas Schnorr <Lucas.Schnorr@imag.fr>
Wed, 7 Sep 2011 13:57:50 +0000 (15:57 +0200)
committerLucas Schnorr <Lucas.Schnorr@imag.fr>
Thu, 8 Sep 2011 14:56:11 +0000 (16:56 +0200)
src/surf/ns3/ns3_simulator.cc

index ccd323b..54d45c8 100644 (file)
@@ -102,21 +102,14 @@ void NS3Sim::simulator_start(void){
 }
 
 static void receive_callback(Ptr<Socket> localSocket){
-  Address addr;
-  localSocket->GetSockName (addr);
-  InetSocketAddress iaddr = InetSocketAddress::ConvertFrom (addr);
   MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
-  mysocket->finished = 1;
-
-  //cout << "[" << Simulator::Now ().GetSeconds() << "] " << "Received [" << mysocket->totalBytes << "bytes],  from: " << iaddr.GetIpv4 () << " port: " << iaddr.GetPort () << endl;
-       std::stringstream sstream;
-               sstream << Simulator::Now ().GetSeconds();
-               std::string s = sstream.str();
-               size_t size = s.size() + 1;
-               char * time_sec = new char[ size ];
-               strncpy( time_sec, s.c_str(), size );
-  XBT_DEBUG("Stop simulator at %s seconds",time_sec);
-  Simulator::Stop();
+
+  if (mysocket->finished == 0){
+    mysocket->finished = 1;
+//    cout << "[" << Simulator::Now ().GetSeconds() << "] " << "recv_cb of F[" << mysocket->totalBytes << "] " << endl;
+    XBT_DEBUG("Stop simulator at %f seconds", Simulator::Now().GetSeconds());
+    Simulator::Stop();
+  }
 }
 
 static void send_callback(Ptr<Socket> localSocket, uint32_t txSpace){