Network/TcpClient: Allow configuration before connection
Former-commit-id: 65c81f994ae5b9e9cce0132e2a86b1918879b24f
This commit is contained in:
parent
8935aa895d
commit
5325513bd8
|
|
@ -8,7 +8,11 @@
|
|||
namespace Nz
|
||||
{
|
||||
inline TcpClient::TcpClient() :
|
||||
AbstractSocket(SocketType_TCP)
|
||||
AbstractSocket(SocketType_TCP),
|
||||
m_keepAliveInterval(1000), //TODO: Query OS default value
|
||||
m_keepAliveTime(7'200'000), //TODO: Query OS default value
|
||||
m_isKeepAliveEnabled(false), //TODO: Query OS default value
|
||||
m_isLowDelayEnabled(false) //TODO: Query OS default value
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -76,9 +76,9 @@ namespace Nz
|
|||
|
||||
void AbstractSocket::OnOpened()
|
||||
{
|
||||
SocketError error;
|
||||
if (!SocketImpl::SetBlocking(m_handle, m_isBlockingEnabled, &error))
|
||||
NazaraWarning("Failed to set socket blocking mode (0x" + String::Number(ERROR, 16) + ')');
|
||||
SocketError errorCode;
|
||||
if (!SocketImpl::SetBlocking(m_handle, m_isBlockingEnabled, &errorCode))
|
||||
NazaraWarning("Failed to set socket blocking mode (0x" + String::Number(errorCode, 16) + ')');
|
||||
}
|
||||
|
||||
bool AbstractSocket::Open(NetProtocol protocol)
|
||||
|
|
|
|||
|
|
@ -70,22 +70,22 @@ namespace Nz
|
|||
|
||||
void TcpClient::EnableLowDelay(bool lowDelay)
|
||||
{
|
||||
NazaraAssert(m_handle != SocketImpl::InvalidHandle, "Invalid handle");
|
||||
|
||||
if (m_isLowDelayEnabled != lowDelay)
|
||||
{
|
||||
SocketImpl::SetNoDelay(m_handle, lowDelay, &m_lastError);
|
||||
if (m_handle != SocketImpl::InvalidHandle)
|
||||
SocketImpl::SetNoDelay(m_handle, lowDelay, &m_lastError);
|
||||
|
||||
m_isLowDelayEnabled = lowDelay;
|
||||
}
|
||||
}
|
||||
|
||||
void TcpClient::EnableKeepAlive(bool keepAlive, UInt64 msTime, UInt64 msInterval)
|
||||
{
|
||||
NazaraAssert(m_handle != SocketImpl::InvalidHandle, "Invalid handle");
|
||||
|
||||
if (m_isKeepAliveEnabled != keepAlive || m_keepAliveTime != msTime || m_keepAliveInterval != msInterval)
|
||||
{
|
||||
SocketImpl::SetKeepAlive(m_handle, keepAlive, msTime, msInterval, &m_lastError);
|
||||
if (m_handle != SocketImpl::InvalidHandle)
|
||||
SocketImpl::SetKeepAlive(m_handle, keepAlive, msTime, msInterval, &m_lastError);
|
||||
|
||||
m_isKeepAliveEnabled = keepAlive;
|
||||
m_keepAliveInterval = msInterval;
|
||||
m_keepAliveTime = msTime;
|
||||
|
|
@ -268,10 +268,14 @@ namespace Nz
|
|||
{
|
||||
AbstractSocket::OnOpened();
|
||||
|
||||
m_isLowDelayEnabled = false; //< Nagle's algorithm, is this enabled everywhere?
|
||||
m_isKeepAliveEnabled = false; //< default documentation value, OS can change this (TODO: Query OS default value)
|
||||
m_keepAliveInterval = 1000; //< default documentation value, OS can change this (TODO: Query OS default value)
|
||||
m_keepAliveTime = 7200000; //< default documentation value, OS can change this (TODO: Query OS default value)
|
||||
SocketError errorCode;
|
||||
|
||||
if (!SocketImpl::SetNoDelay(m_handle, m_isLowDelayEnabled, &errorCode))
|
||||
NazaraWarning("Failed to set socket no delay mode (0x" + String::Number(errorCode, 16) + ')');
|
||||
|
||||
if (!SocketImpl::SetKeepAlive(m_handle, m_isKeepAliveEnabled, m_keepAliveTime, m_keepAliveInterval, &errorCode))
|
||||
NazaraWarning("Failed to set socket keep alive mode (0x" + String::Number(errorCode, 16) + ')');
|
||||
|
||||
m_peerAddress = IpAddress::Invalid;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue