|
|
| 83 |
TcpSocketBase::TcpSocketBase (void) |
83 |
TcpSocketBase::TcpSocketBase (void) |
| 84 |
: m_dupAckCount (0), |
84 |
: m_dupAckCount (0), |
| 85 |
m_delAckCount (0), |
85 |
m_delAckCount (0), |
|
|
86 |
m_nagle (true), |
| 86 |
m_endPoint (0), |
87 |
m_endPoint (0), |
| 87 |
m_node (0), |
88 |
m_node (0), |
| 88 |
m_tcp (0), |
89 |
m_tcp (0), |
|
|
| 109 |
m_dupAckCount (sock.m_dupAckCount), |
110 |
m_dupAckCount (sock.m_dupAckCount), |
| 110 |
m_delAckCount (0), |
111 |
m_delAckCount (0), |
| 111 |
m_delAckMaxCount (sock.m_delAckMaxCount), |
112 |
m_delAckMaxCount (sock.m_delAckMaxCount), |
|
|
113 |
m_nagle (sock.m_nagle), |
| 112 |
m_cnCount (sock.m_cnCount), |
114 |
m_cnCount (sock.m_cnCount), |
| 113 |
m_delAckTimeout (sock.m_delAckTimeout), |
115 |
m_delAckTimeout (sock.m_delAckTimeout), |
| 114 |
m_persistTimeout (sock.m_persistTimeout), |
116 |
m_persistTimeout (sock.m_persistTimeout), |
|
|
| 1296 |
{ |
1298 |
{ |
| 1297 |
break; // No more |
1299 |
break; // No more |
| 1298 |
} |
1300 |
} |
|
|
1301 |
|
| 1302 |
// Nagle's algorithm. Hold off sending if there is unacked data in the |
| 1303 |
// buffer and the amount of data to send is less than a segment size |
| 1304 |
if (UnAckDataCount () > 0 && |
| 1305 |
m_txBuffer.SizeFromSequence (m_nextTxSequence) < m_segmentSize) |
| 1306 |
{ |
| 1307 |
NS_LOG_LOGIC ("Invoking Nagle's algorithm. Wait to send."); |
| 1308 |
break; |
| 1309 |
} |
| 1310 |
|
| 1299 |
uint32_t s = std::min (w, m_segmentSize); // Send no more than window |
1311 |
uint32_t s = std::min (w, m_segmentSize); // Send no more than window |
| 1300 |
Ptr<Packet> p = m_txBuffer.CopyFromSequence (s, m_nextTxSequence); |
1312 |
Ptr<Packet> p = m_txBuffer.CopyFromSequence (s, m_nextTxSequence); |
| 1301 |
NS_LOG_LOGIC ("TcpSocketBase " << this << " SendPendingData" << |
1313 |
NS_LOG_LOGIC ("TcpSocketBase " << this << " SendPendingData" << |
|
|
| 1732 |
} |
1744 |
} |
| 1733 |
|
1745 |
|
| 1734 |
void |
1746 |
void |
|
|
1747 |
TcpSocketBase::SetNagle (bool enable) |
| 1748 |
{ |
| 1749 |
m_nagle = enable; |
| 1750 |
} |
| 1751 |
|
| 1752 |
bool |
| 1753 |
TcpSocketBase::GetNagle (void) const |
| 1754 |
{ |
| 1755 |
return m_nagle; |
| 1756 |
} |
| 1757 |
|
| 1758 |
void |
| 1735 |
TcpSocketBase::SetPersistTimeout (Time timeout) |
1759 |
TcpSocketBase::SetPersistTimeout (Time timeout) |
| 1736 |
{ |
1760 |
{ |
| 1737 |
m_persistTimeout = timeout; |
1761 |
m_persistTimeout = timeout; |