+static void normalClose_callback(ns3::Ptr<ns3::Socket> socket){
+ SgFlow* flow = getFlowFromSocket(socket);
+ XBT_DEBUG("normalClose_cb of F[%p, %p, %d]", flow, flow->action_, flow->totalBytes_);
+ receive_callback (socket);
+}
+
+static void errorClose_callback(ns3::Ptr<ns3::Socket> socket){
+ SgFlow* flow = getFlowFromSocket(socket);
+ XBT_DEBUG("errorClose_cb of F[%p, %p, %d]", flow, flow->action_, flow->totalBytes_);
+ xbt_die("NS3: a socket was closed anormally");
+}
+
+static void succeededConnect_callback(ns3::Ptr<ns3::Socket> socket){
+ SgFlow* flow = getFlowFromSocket(socket);
+ XBT_DEBUG("succeededConnect_cb of F[%p, %p, %d]", flow, flow->action_, flow->totalBytes_);
+}
+
+static void failedConnect_callback(ns3::Ptr<ns3::Socket> socket){
+ SgFlow* mysocket = getFlowFromSocket(socket);
+ XBT_DEBUG("failedConnect_cb of F[%p, %p, %d]", mysocket, mysocket->action_, mysocket->totalBytes_);
+ xbt_die("NS3: a socket failed to connect");
+}
+
+void StartFlow(ns3::Ptr<ns3::Socket> sock, const char *to, uint16_t port_number)
+{
+ ns3::InetSocketAddress serverAddr (to, port_number);