summaryrefslogtreecommitdiff
path: root/louloulibs/network/poller.cpp
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2016-12-21 21:25:17 +0100
committerJonas Smedegaard <dr@jones.dk>2016-12-21 21:25:17 +0100
commitdc1ad45aea9a10007a31ae449b1e0fe352a8a6cd (patch)
treeeb233ce97fc828e2edba69a82a1e7314b92771d3 /louloulibs/network/poller.cpp
parenta077b304b27d21bf635ef4f31a2a0447d3b14d11 (diff)
parentf820d86aadb7a5473bcc0a0a3669732ab0182555 (diff)
downloadbiboumi-dc1ad45aea9a10007a31ae449b1e0fe352a8a6cd.tar.gz
biboumi-dc1ad45aea9a10007a31ae449b1e0fe352a8a6cd.tar.bz2
biboumi-dc1ad45aea9a10007a31ae449b1e0fe352a8a6cd.tar.xz
biboumi-dc1ad45aea9a10007a31ae449b1e0fe352a8a6cd.zip
Merge tag 'upstream/4.0'
Upstream version 4.0 # gpg: Signature made Wed Dec 21 21:25:11 2016 CET # gpg: using RSA key 2C7C3146C1A00121 # gpg: Good signature from "Jonas Smedegaard <dr@jones.dk>" # gpg: aka "Jonas Smedegaard <jonas@homebase.dk>" # gpg: aka "Jonas Smedegaard <js@debian.org>" # gpg: aka "[jpeg image of size 4165]"
Diffstat (limited to 'louloulibs/network/poller.cpp')
-rw-r--r--louloulibs/network/poller.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/louloulibs/network/poller.cpp b/louloulibs/network/poller.cpp
index 8a6fd97..9f5bcfb 100644
--- a/louloulibs/network/poller.cpp
+++ b/louloulibs/network/poller.cpp
@@ -95,7 +95,7 @@ void Poller::remove_socket_handler(const socket_t socket)
void Poller::watch_send_events(SocketHandler* socket_handler)
{
#if POLLER == POLL
- for (size_t i = 0; i <= this->nfds; ++i)
+ for (size_t i = 0; i < this->nfds; ++i)
{
if (this->fds[i].fd == socket_handler->get_socket())
{
@@ -171,7 +171,7 @@ int Poller::poll(const std::chrono::milliseconds& timeout)
// We cannot possibly have more ready events than the number of fds we are
// watching
assert(static_cast<unsigned int>(nb_events) <= this->nfds);
- for (size_t i = 0; i <= this->nfds && nb_events != 0; ++i)
+ for (size_t i = 0; i < this->nfds && nb_events != 0; ++i)
{
auto socket_handler = this->socket_handlers.at(this->fds[i].fd);
if (this->fds[i].revents == 0)
@@ -186,7 +186,8 @@ int Poller::poll(const std::chrono::milliseconds& timeout)
socket_handler->on_send();
nb_events--;
}
- else if (this->fds[i].revents & POLLOUT)
+ else if (this->fds[i].revents & POLLOUT ||
+ this->fds[i].revents & POLLIN)
{
socket_handler->connect();
nb_events--;
@@ -226,3 +227,8 @@ size_t Poller::size() const
{
return this->socket_handlers.size();
}
+
+bool Poller::is_managing_socket(const socket_t socket) const
+{
+ return (this->socket_handlers.find(socket) != this->socket_handlers.end());
+}