+ if (mysocket->remaining == 0){
+ //everything was buffered to send, tell NS3 to close the socket
+ localSocket->Close();
+ }
+ return;
+}
+
+static void datasent_callback(Ptr<Socket> localSocket, uint32_t dataSent){
+ MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
+ mysocket->sentBytes += dataSent;
+ XBT_DEBUG("datasent_cb of F[%p, %p, %d] %d sent", mysocket, mysocket->action, mysocket->totalBytes, dataSent);
+}
+
+static void normalClose_callback(Ptr<Socket> localSocket){
+ MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
+ XBT_DEBUG("normalClose_cb of F[%p, %p, %d]", mysocket, mysocket->action, mysocket->totalBytes);
+ receive_callback (localSocket);
+}
+
+static void errorClose_callback(Ptr<Socket> localSocket){
+ MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
+ XBT_DEBUG("errorClose_cb of F[%p, %p, %d]", mysocket, mysocket->action, mysocket->totalBytes);
+ xbt_die("NS3: a socket was closed anormally");
+}
+
+static void succeededConnect_callback(Ptr<Socket> localSocket){
+ MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
+ XBT_DEBUG("succeededConnect_cb of F[%p, %p, %d]", mysocket, mysocket->action, mysocket->totalBytes);
+}
+
+static void failedConnect_callback(Ptr<Socket> localSocket){
+ MySocket* mysocket = (MySocket*)xbt_dict_get_or_null(dict_socket,(char*)&localSocket);
+ XBT_DEBUG("failedConnect_cb of F[%p, %p, %d]", mysocket, mysocket->action, mysocket->totalBytes);
+ xbt_die("NS3: a socket failed to connect");