Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Dig through git history, and update copyright lines.
[simgrid.git] / src / surf / ns3 / ns3_simulator.cc
index 9509298..d985d73 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2007-2012. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -41,6 +41,12 @@ static XBT_INLINE void transformSocketPtr (Ptr<Socket> localSocket){
   sprintf(socket_key,"%s",s.c_str());
 }
 
+static void delete_mysocket(void *p)
+{
+  MySocket *sock = (MySocket *)p;
+  delete(sock);
+}
+
 /*
  * This function create a flow from src to dst
  *
@@ -61,7 +67,7 @@ void NS3Sim::create_flow_NS3(
                uint32_t totalBytes,
                void * action)
 {
-       if(!dict_socket) dict_socket = xbt_dict_new();
+       if(!dict_socket) dict_socket = xbt_dict_new_homogeneous(delete_mysocket);
 
        PacketSinkHelper sink ("ns3::TcpSocketFactory",
                                                        InetSocketAddress (Ipv4Address::GetAny(),
@@ -80,7 +86,7 @@ void NS3Sim::create_flow_NS3(
        mysocket->action = action;
 
        transformSocketPtr(sock);
-       xbt_dict_set(dict_socket,socket_key, mysocket,free);
+       xbt_dict_set(dict_socket,socket_key, mysocket,NULL);
 
        sock->Bind(InetSocketAddress(port_number));
        XBT_DEBUG("Create flow starting to %fs + %fs = %fs",start-ns3_time(), ns3_time(), start);
@@ -109,7 +115,7 @@ double NS3Sim::get_sent_from_socket(void *socket){
 void NS3Sim::simulator_start(double min){
   if(min > 0.0)
     Simulator::Stop(Seconds(min));
-  XBT_DEBUG("Start simulator");
+  XBT_DEBUG("Start simulator '%f'",min);
   Simulator::Run ();
 }
 
@@ -140,7 +146,7 @@ static void send_callback(Ptr<Socket> localSocket, uint32_t txSpace){
 
        uint8_t *data = (uint8_t*)malloc(sizeof(uint8_t)*txSpace);
 
-       while (mysocket->sentBytes < mysocket->totalBytes
+       while (mysocket->bufferedBytes < mysocket->totalBytes
                        && localSocket->GetTxAvailable () > 0)
        {
       uint32_t toWrite = min ((mysocket->remaining), txSpace);
@@ -149,15 +155,15 @@ static void send_callback(Ptr<Socket> localSocket, uint32_t txSpace){
 
       if(amountSent < 0)
          return;
-         (mysocket->sentBytes) += amountSent;
-         (mysocket->remaining) -= amountSent;
+      (mysocket->bufferedBytes) += amountSent;
+      (mysocket->remaining) -= amountSent;
       XBT_DEBUG("send_cb of F[%p, %p, %d] (%d/%d) %d buffered", mysocket, mysocket->action, mysocket->totalBytes, mysocket->remaining, mysocket->totalBytes, amountSent);
 
     }
 
        free(data);
 
-       if ((mysocket->sentBytes) >= mysocket->totalBytes){
+       if ((mysocket->bufferedBytes) >= mysocket->totalBytes){
                localSocket->Close();
        }
 }