diff --git a/Net/include/Poco/Net/Socket.h b/Net/include/Poco/Net/Socket.h index c3ca874bf..5a8590aad 100644 --- a/Net/include/Poco/Net/Socket.h +++ b/Net/include/Poco/Net/Socket.h @@ -134,15 +134,6 @@ public: /// exceptList is zero, select() will return immediately and the /// return value will be 0. - static int poll(SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout); - /// Provides same functionality as select() call on the platforms - /// that have poll() system call available. The advantage of using poll() over - /// select() is that the number of socket file descriptors scanned is dynamically - /// determined at runtime and is not subject to static maximum limitations like select(). - /// - /// For documentation, see - /// select(SocketList&, SocketList&, SocketList&, const Poco::Timespan&) - bool poll(const Poco::Timespan& timeout, int mode) const; /// Determines the status of the socket, using a /// call to poll() or select(). diff --git a/Net/src/Socket.cpp b/Net/src/Socket.cpp index 364a717eb..cdb9a35ff 100644 --- a/Net/src/Socket.cpp +++ b/Net/src/Socket.cpp @@ -91,11 +91,9 @@ Socket::~Socket() } -int Socket::poll(SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout) +int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout) { -#if !defined(POCO_HAVE_FD_POLL) - throw NotImplementedException("poll() is only available on POSIX platforms"); -#else +#if defined(POCO_HAVE_FD_POLL) nfds_t nfd = readList.size() + writeList.size() + exceptList.size(); if (0 == nfd) return 0; @@ -173,15 +171,12 @@ int Socket::poll(SocketList& readList, SocketList& writeList, SocketList& except } std::swap(readList, readyReadList); std::swap(writeList, readyWriteList); - std::swap(exceptList, readyExceptList); - + std::swap(exceptList, readyExceptList); + +// return rc; return readList.size() + writeList.size() + exceptList.size(); -#endif -} - -int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout) -{ +#else fd_set fdRead; fd_set fdWrite; fd_set fdExcept; @@ -250,8 +245,10 @@ int Socket::select(SocketList& readList, SocketList& writeList, SocketList& exce if (FD_ISSET(it->sockfd(), &fdExcept)) readyExceptList.push_back(*it); } - std::swap(exceptList, readyExceptList); - return rc; + std::swap(exceptList, readyExceptList); + + return rc; +#endif } diff --git a/Net/src/SocketReactor.cpp b/Net/src/SocketReactor.cpp index b3fcb99a1..c07354994 100644 --- a/Net/src/SocketReactor.cpp +++ b/Net/src/SocketReactor.cpp @@ -121,11 +121,7 @@ void SocketReactor::run() { onIdle(); } -#if defined(POCO_HAVE_FD_POLL) - else if (Socket::poll(readable, writable, except, _timeout)) -#else else if (Socket::select(readable, writable, except, _timeout)) -#endif { for (Socket::SocketList::iterator it = readable.begin(); it != readable.end(); ++it) dispatch(*it, _pReadableNotification);