Change return type for Socket::Pool to bool

refs #6617
This commit is contained in:
Gunnar Beutner 2014-07-04 09:31:43 +02:00
parent 9b008dd3d1
commit 4b157ac54f
2 changed files with 13 additions and 5 deletions

View File

@ -358,8 +358,10 @@ Socket::Ptr Socket::Accept(void)
return make_shared<Socket>(fd);
}
void Socket::Poll(bool read, bool write)
bool Socket::Poll(bool read, bool write)
{
int rc;
#ifdef _WIN32
fd_set readfds, writefds, exceptfds;
@ -374,7 +376,9 @@ void Socket::Poll(bool read, bool write)
FD_ZERO(&exceptfds);
FD_SET(GetFD(), &exceptfds);
if (select(GetFD() + 1, &readfds, &writefds, &exceptfds, NULL) < 0) {
rc = select(GetFD() + 1, &readfds, &writefds, &exceptfds, NULL);
if (rc < 0) {
std::ostringstream msgbuf;
msgbuf << "select() failed with return code " << WSAGetLastError() << ", \"" << Utility::FormatErrorNumber(WSAGetLastError()) << "\"";
Log(LogCritical, "Socket", msgbuf.str());
@ -389,7 +393,9 @@ void Socket::Poll(bool read, bool write)
pfd.events = (read ? POLLIN : 0) | (write ? POLLOUT : 0);
pfd.revents = 0;
if (poll(&pfd, 1, -1) < 0) {
rc = poll(&pfd, 1, -1);
if (rc < 0) {
std::ostringstream msgbuf;
msgbuf << "poll() failed with return code " << errno << ", \"" << Utility::FormatErrorNumber(errno) << "\"";
Log(LogCritical, "Socket", msgbuf.str());
@ -399,6 +405,8 @@ void Socket::Poll(bool read, bool write)
<< boost::errinfo_errno(errno));
}
#endif /* _WIN32 */
return (rc != 0);
}
void Socket::MakeNonBlocking(void)
@ -408,4 +416,4 @@ void Socket::MakeNonBlocking(void)
#else /* _WIN32 */
Utility::SetNonBlocking(GetFD());
#endif /* _WIN32 */
}
}

View File

@ -57,7 +57,7 @@ public:
void Listen(void);
Socket::Ptr Accept(void);
void Poll(bool read, bool write);
bool Poll(bool read, bool write);
void MakeNonBlocking(void);