socket->SetCloseCallbacks(MakeCallback(&MyServer::OnNormalClose, this), MakeCallback(&MyServer::OnProblemClose));
void MyServer::OnNormalClose(Ptr<Socket> socket) { ... }
int socket_id = rand();
socket->SetCloseCallbacks(MakeBoundCallback(&MyServer::OnNormalClose, this, socket_id), MakeCallback(&MyServer::OnProblemClose, this, socket_id));
void MyServer::OnNormalClose(int socket_id, Ptr<Socket> socket) { ... }
void MyServer::OnNormalClose(Ptr<Socket> socket, int socket_id) { ... }
socket->SetCloseCallbacks(MakeCallback(&MyServer::OnNormalClose, this, socket_id), MakeCallback(&MyServer::OnProblemClose, this, socket_id));
void MyServer::OnNormalClose(Ptr<Socket> socket, int socket_id) { ... }
void
HttpServerApplication::ConnectionAccepted (Ptr<Socket> socket, const Address& address)
{
NS_LOG_FUNCTION (this << socket << address);
uint64_t socket_id = RegisterSocket(socket);
m_activeClients[socket_id] = new HttpServerClientSocket(socket_id, m_contentDir);
NS_LOG_DEBUG (socket << " " << Simulator::Now () << " Successful socket id : " << socket_id << " Connection Accepted From " << address);
// set callbacks for this socket to be in HttpServerClientSocket class
socket->SetSendCallback (MakeCallback (&HttpServerClientSocket::HandleReadyToTransmit, m_activeClients[socket_id]));
socket->SetRecvCallback (MakeCallback (&HttpServerClientSocket::HandleIncomingData, m_activeClients[socket_id]));
socket->SetCloseCallbacks (MakeCallback (&HttpServerApplication::ConnectionClosedNormal, this, socket_id),
MakeCallback (&HttpServerApplication::ConnectionClosedError, this, socket_id));
}
void
HttpServerApplication::ConnectionClosedNormal (Ptr<Socket> socket, uint64_t socket_id)
{
fprintf(stderr, "Server(%ld): Socket was closed!\n", socket_id);
}
void
HttpServerApplication::ConnectionClosedError (Ptr<Socket> socket, uint64_t socket_id)
{
fprintf(stderr, "Server(%ld): Socket was closed with an error!\n", socket_id);
}
./ns3/callback.h:1609:40: note: template argument deduction/substitution failed:
../src/applications/model/http-server.cc:210:107: note: mismatched types ‘R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9)’ and ‘void (ns3::HttpServerApplication::*)(ns3::Ptr<ns3::Socket>, uint64_t) {aka void (ns3::HttpServerApplication::*)(ns3::Ptr<ns3::Socket>, long unsigned int)}’
MakeCallback (&HttpServerApplication::ConnectionClosedError, this, socket_id));
m_activeClients[socket_id] = new HttpServerClientSocket(socket_id, m_contentDir);
MakeCallback (&HttpServerApplication::ConnectionClosedNormal, this, socket_id)
MakeBoundCallback (&HttpServerApplication::ConnectionClosedNormal, this, socket_id)
void
HttpServerApplication::ConnectionClosedError (uint64_t socket_id, Ptr<Socket> socket)
{
fprintf(stderr, "Server(%ld): Socket was closed with an error!\n", socket_id);
}
connectionClosedErrorCallback (socket);