std::vector<Ptr<TcpSocketBase> > m_sockets; //!< list of sockets
class TcpSocketBase : public TcpSocket
class TcpSocket : public Socket
void
TcpSocketBase::CompleteFork (Ptr<Packet> p, const TcpHeader& h,
const Address& fromAddress, const Address& toAddress)
Ptr<Socket>
TcpL4Protocol::CreateSocket (TypeId socketTypeId)
{
NS_LOG_FUNCTION_NOARGS ();
ObjectFactory rttFactory;
ObjectFactory socketFactory;
rttFactory.SetTypeId (m_rttTypeId);
socketFactory.SetTypeId (socketTypeId);
Ptr<RttEstimator> rtt = rttFactory.Create<RttEstimator> ();
Ptr<TcpSocketBase> socket = socketFactory.Create<TcpSocketBase> ();
socket->SetNode (m_node);
socket->SetTcp (this);
socket->SetRtt (rtt);
m_sockets.push_back (socket);
return socket;
}
int
TcpSocketBase::Bind (void)
{
NS_LOG_FUNCTION (this);
m_endPoint = m_tcp->Allocate ();
if (0 == m_endPoint)
{
m_errno = ERROR_ADDRNOTAVAIL;
return -1;
}
m_tcp->m_sockets.push_back (this);
return SetupCallback ();
}
void
TcpSocketBase::CompleteFork (Ptr<Packet> p, const TcpHeader& h,
const Address& fromAddress, const Address& toAddress)