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
|
namespace Nz
|
||||||
{
|
{
|
||||||
inline TcpClient::TcpClient() :
|
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()
|
void AbstractSocket::OnOpened()
|
||||||
{
|
{
|
||||||
SocketError error;
|
SocketError errorCode;
|
||||||
if (!SocketImpl::SetBlocking(m_handle, m_isBlockingEnabled, &error))
|
if (!SocketImpl::SetBlocking(m_handle, m_isBlockingEnabled, &errorCode))
|
||||||
NazaraWarning("Failed to set socket blocking mode (0x" + String::Number(ERROR, 16) + ')');
|
NazaraWarning("Failed to set socket blocking mode (0x" + String::Number(errorCode, 16) + ')');
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AbstractSocket::Open(NetProtocol protocol)
|
bool AbstractSocket::Open(NetProtocol protocol)
|
||||||
|
|
|
||||||
|
|
@ -70,22 +70,22 @@ namespace Nz
|
||||||
|
|
||||||
void TcpClient::EnableLowDelay(bool lowDelay)
|
void TcpClient::EnableLowDelay(bool lowDelay)
|
||||||
{
|
{
|
||||||
NazaraAssert(m_handle != SocketImpl::InvalidHandle, "Invalid handle");
|
|
||||||
|
|
||||||
if (m_isLowDelayEnabled != lowDelay)
|
if (m_isLowDelayEnabled != lowDelay)
|
||||||
{
|
{
|
||||||
|
if (m_handle != SocketImpl::InvalidHandle)
|
||||||
SocketImpl::SetNoDelay(m_handle, lowDelay, &m_lastError);
|
SocketImpl::SetNoDelay(m_handle, lowDelay, &m_lastError);
|
||||||
|
|
||||||
m_isLowDelayEnabled = lowDelay;
|
m_isLowDelayEnabled = lowDelay;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TcpClient::EnableKeepAlive(bool keepAlive, UInt64 msTime, UInt64 msInterval)
|
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)
|
if (m_isKeepAliveEnabled != keepAlive || m_keepAliveTime != msTime || m_keepAliveInterval != msInterval)
|
||||||
{
|
{
|
||||||
|
if (m_handle != SocketImpl::InvalidHandle)
|
||||||
SocketImpl::SetKeepAlive(m_handle, keepAlive, msTime, msInterval, &m_lastError);
|
SocketImpl::SetKeepAlive(m_handle, keepAlive, msTime, msInterval, &m_lastError);
|
||||||
|
|
||||||
m_isKeepAliveEnabled = keepAlive;
|
m_isKeepAliveEnabled = keepAlive;
|
||||||
m_keepAliveInterval = msInterval;
|
m_keepAliveInterval = msInterval;
|
||||||
m_keepAliveTime = msTime;
|
m_keepAliveTime = msTime;
|
||||||
|
|
@ -268,10 +268,14 @@ namespace Nz
|
||||||
{
|
{
|
||||||
AbstractSocket::OnOpened();
|
AbstractSocket::OnOpened();
|
||||||
|
|
||||||
m_isLowDelayEnabled = false; //< Nagle's algorithm, is this enabled everywhere?
|
SocketError errorCode;
|
||||||
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)
|
if (!SocketImpl::SetNoDelay(m_handle, m_isLowDelayEnabled, &errorCode))
|
||||||
m_keepAliveTime = 7200000; //< default documentation value, OS can change this (TODO: Query OS default value)
|
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;
|
m_peerAddress = IpAddress::Invalid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue