Network/SocketPoller: Fix behavior of Wait method (-1 will block)
This commit is contained in:
parent
adf7bb15cf
commit
3d368b2fe7
|
|
@ -31,7 +31,7 @@ namespace Nz
|
||||||
bool RegisterSocket(AbstractSocket& socket, SocketPollEventFlags eventFlags);
|
bool RegisterSocket(AbstractSocket& socket, SocketPollEventFlags eventFlags);
|
||||||
void UnregisterSocket(AbstractSocket& socket);
|
void UnregisterSocket(AbstractSocket& socket);
|
||||||
|
|
||||||
bool Wait(UInt64 msTimeout);
|
bool Wait(int msTimeout);
|
||||||
|
|
||||||
inline SocketPoller& operator=(SocketPoller&& socketPoller);
|
inline SocketPoller& operator=(SocketPoller&& socketPoller);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ namespace Nz
|
||||||
NazaraWarning("An error occured while removing socket from epoll structure (errno " + String::Number(errno) + ": " + Error::GetLastSystemError() + ')');
|
NazaraWarning("An error occured while removing socket from epoll structure (errno " + String::Number(errno) + ": " + Error::GetLastSystemError() + ')');
|
||||||
}
|
}
|
||||||
|
|
||||||
int SocketPollerImpl::Wait(UInt64 msTimeout, SocketError* error)
|
int SocketPollerImpl::Wait(int msTimeout, SocketError* error)
|
||||||
{
|
{
|
||||||
int activeSockets;
|
int activeSockets;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ namespace Nz
|
||||||
bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags);
|
bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags);
|
||||||
void UnregisterSocket(SocketHandle socket);
|
void UnregisterSocket(SocketHandle socket);
|
||||||
|
|
||||||
int Wait(UInt64 msTimeout, SocketError* error);
|
int Wait(int msTimeout, SocketError* error);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_set<SocketHandle> m_readyToReadSockets;
|
std::unordered_set<SocketHandle> m_readyToReadSockets;
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ namespace Nz
|
||||||
m_readyToWriteSockets.erase(socket);
|
m_readyToWriteSockets.erase(socket);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SocketPollerImpl::Wait(UInt64 msTimeout, SocketError* error)
|
int SocketPollerImpl::Wait(int msTimeout, SocketError* error)
|
||||||
{
|
{
|
||||||
int activeSockets;
|
int activeSockets;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ namespace Nz
|
||||||
bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags);
|
bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags);
|
||||||
void UnregisterSocket(SocketHandle socket);
|
void UnregisterSocket(SocketHandle socket);
|
||||||
|
|
||||||
int Wait(UInt64 msTimeout, SocketError* error);
|
int Wait(int msTimeout, SocketError* error);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unordered_set<SocketHandle> m_readyToReadSockets;
|
std::unordered_set<SocketHandle> m_readyToReadSockets;
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ namespace Nz
|
||||||
* Waits a specific/undetermined amount of time until at least one socket part of the SocketPoller becomes ready.
|
* Waits a specific/undetermined amount of time until at least one socket part of the SocketPoller becomes ready.
|
||||||
* To query the ready state of the registered socket, use the IsReadyToRead or IsReadyToWrite functions.
|
* To query the ready state of the registered socket, use the IsReadyToRead or IsReadyToWrite functions.
|
||||||
*
|
*
|
||||||
* \param msTimeout Maximum time to wait in milliseconds, 0 for infinity
|
* \param msTimeout Maximum time to wait in milliseconds, 0 will returns immediately and -1 will block indefinitely
|
||||||
*
|
*
|
||||||
* \return True if at least one socket registered to the poller is ready.
|
* \return True if at least one socket registered to the poller is ready.
|
||||||
*
|
*
|
||||||
|
|
@ -179,7 +179,7 @@ namespace Nz
|
||||||
* \see IsReady
|
* \see IsReady
|
||||||
* \see RegisterSocket
|
* \see RegisterSocket
|
||||||
*/
|
*/
|
||||||
bool SocketPoller::Wait(UInt64 msTimeout)
|
bool SocketPoller::Wait(int msTimeout)
|
||||||
{
|
{
|
||||||
SocketError error;
|
SocketError error;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ namespace Nz
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int SocketPollerImpl::Wait(UInt64 msTimeout, SocketError* error)
|
int SocketPollerImpl::Wait(int msTimeout, SocketError* error)
|
||||||
{
|
{
|
||||||
int activeSockets;
|
int activeSockets;
|
||||||
|
|
||||||
|
|
@ -179,7 +179,7 @@ namespace Nz
|
||||||
tv.tv_sec = static_cast<long>(msTimeout / 1000ULL);
|
tv.tv_sec = static_cast<long>(msTimeout / 1000ULL);
|
||||||
tv.tv_usec = static_cast<long>((msTimeout % 1000ULL) * 1000ULL);
|
tv.tv_usec = static_cast<long>((msTimeout % 1000ULL) * 1000ULL);
|
||||||
|
|
||||||
activeSockets = ::select(0xDEADBEEF, readSet, writeSet, nullptr, (msTimeout > 0) ? &tv : nullptr); //< The first argument is ignored on Windows
|
activeSockets = ::select(0xDEADBEEF, readSet, writeSet, nullptr, (msTimeout >= 0) ? &tv : nullptr); //< The first argument is ignored on Windows
|
||||||
if (activeSockets == SOCKET_ERROR)
|
if (activeSockets == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
if (error)
|
if (error)
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace Nz
|
||||||
bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags);
|
bool RegisterSocket(SocketHandle socket, SocketPollEventFlags eventFlags);
|
||||||
void UnregisterSocket(SocketHandle socket);
|
void UnregisterSocket(SocketHandle socket);
|
||||||
|
|
||||||
int Wait(UInt64 msTimeout, SocketError* error);
|
int Wait(int msTimeout, SocketError* error);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if NAZARA_NETWORK_POLL_SUPPORT
|
#if NAZARA_NETWORK_POLL_SUPPORT
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue