Network/SocketPoller: Fix behavior of Wait method (-1 will block)

This commit is contained in:
Jérôme Leclercq 2017-08-04 13:37:17 +02:00
parent adf7bb15cf
commit 3d368b2fe7
8 changed files with 10 additions and 10 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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)

View File

@ -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