-/* Copyright (c) 2007, 2008, 2009, 2010. The SimGrid Team.
+/* Copyright (c) 2007-2014. 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. */
-#include "surf/ns3/ns3_simulator.h"
+#include "src/surf/ns3/ns3_simulator.h"
#include "xbt/dict.h"
#include "xbt/log.h"
#include "xbt/sysdep.h"
const char *to,
uint16_t port_number);
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simulator_ns3, surf,
- "Logging specific to the SURF network NS3 module");
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ns3);
// Constructor.
NS3Sim::NS3Sim(){
NS3Sim::~NS3Sim(){
}
-static XBT_INLINE void transformSocketPtr (Ptr<Socket> localSocket){
+static inline void transformSocketPtr (Ptr<Socket> localSocket){
std::stringstream sstream;
sstream << localSocket ;
std::string s = sstream.str();
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
*
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(),
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);
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 ();
}
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);
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();
}
}