16 #ifndef NSC_TCP_SOCKET_IMPL_H
17 #define NSC_TCP_SOCKET_IMPL_H
23 #include "ns3/callback.h"
24 #include "ns3/traced-value.h"
25 #include "ns3/tcp-socket.h"
27 #include "ns3/ipv4-address.h"
28 #include "ns3/inet-socket-address.h"
29 #include "ns3/event-id.h"
30 #include "pending-data.h"
31 #include "ns3/sequence-number.h"
40 class NscTcpL4Protocol;
56 static TypeId GetTypeId (
void);
67 virtual enum SocketErrno
GetErrno (
void)
const;
70 virtual int Bind (
void);
71 virtual int Bind6 (
void);
73 virtual int Close (
void);
90 void NSCWakeup (
void);
93 int FinishBind (
void);
98 bool SendPendingData (
void);
99 bool ReadPendingData (
void);
101 void CompleteFork (
void);
102 void ConnectionSucceeded ();
109 virtual void SetSndBufSize (uint32_t size);
110 virtual uint32_t GetSndBufSize (
void)
const;
111 virtual void SetRcvBufSize (uint32_t size);
112 virtual uint32_t GetRcvBufSize (
void)
const;
113 virtual void SetSegSize (uint32_t size);
114 virtual uint32_t GetSegSize (
void)
const;
115 virtual void SetAdvWin (uint32_t window);
116 virtual uint32_t GetAdvWin (
void)
const;
117 virtual void SetSSThresh (uint32_t threshold);
118 virtual uint32_t GetSSThresh (
void)
const;
119 virtual void SetInitialCwnd (uint32_t cwnd);
120 virtual uint32_t GetInitialCwnd (
void)
const;
121 virtual void SetConnTimeout (
Time timeout);
122 virtual Time GetConnTimeout (
void)
const;
123 virtual void SetConnCount (uint32_t count);
124 virtual uint32_t GetConnCount (
void)
const;
125 virtual void SetDelAckTimeout (
Time timeout);
126 virtual Time GetDelAckTimeout (
void)
const;
127 virtual void SetDelAckMaxCount (uint32_t count);
128 virtual uint32_t GetDelAckMaxCount (
void)
const;
129 virtual void SetTcpNoDelay (
bool noDelay);
130 virtual bool GetTcpNoDelay (
void)
const;
131 virtual void SetPersistTimeout (
Time timeout);
132 virtual Time GetPersistTimeout (
void)
const;
134 enum Socket::SocketErrno GetNativeNs3Errno (
int err)
const;
135 uint32_t m_delAckMaxCount;
136 Time m_delAckTimeout;
143 uint16_t m_remotePort;
146 uint16_t m_localPort;
148 enum SocketErrno m_errno;
158 std::queue<Ptr<Packet> > m_txBuffer;
159 uint32_t m_txBufferSize;
162 uint32_t m_segmentSize;
163 uint32_t m_rxWindowSize;
164 uint32_t m_advertisedWindowSize;
167 uint32_t m_initialCWnd;
170 Time m_lastMeasuredRtt;
175 Time m_persistTimeout;
178 std::queue<Ptr<Packet> > m_deliveryQueue;
179 uint32_t m_rxAvailable;
183 uint32_t m_sndBufSize;
184 uint32_t m_rcvBufSize;
virtual Ptr< Node > GetNode(void) const
virtual int ShutdownSend(void)
(abstract) base class of all TcpSockets
virtual int GetSockName(Address &address) const
virtual enum SocketType GetSocketType(void) const
Ptr< Packet > Recv(void)
Read a single packet from the socket.
virtual int Bind6(void)
Allocate a local IPv6 endpoint for this socket.
a polymophic address class
virtual uint32_t GetTxAvailable(void) const
Returns the number of bytes which can be sent in a single call to Send.
Socket logic for the NSC TCP sockets.
virtual bool SetAllowBroadcast(bool allowBroadcast)
Configure whether broadcast datagram transmissions are allowed.
virtual int Send(Ptr< Packet > p, uint32_t flags)
Send data (or dummy data) to the remote host.
virtual int ShutdownRecv(void)
virtual bool GetAllowBroadcast() const
Query whether broadcast datagram transmissions are allowed.
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)
Read a single packet from the socket and retrieve the sender address.
virtual int Listen(void)
Listen for incoming connections.
virtual int Bind(void)
Allocate a local IPv4 endpoint for this socket.
virtual uint32_t GetRxAvailable(void) const
Ipv4 addresses are stored in host order in this class.
virtual int Close(void)
Close a socket.
virtual enum SocketErrno GetErrno(void) const
virtual int SendTo(Ptr< Packet > p, uint32_t flags, const Address &toAddress)
Send data to a specified peer.
a unique identifier for an interface.
virtual int Connect(const Address &address)
Initiate a connection to a remote host.
A representation of an internet endpoint/connection.
virtual ~NscTcpSocketImpl()