summaryrefslogtreecommitdiff
path: root/src/network/poller.cpp
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2013-11-02 16:04:10 +0100
committerFlorent Le Coz <louiz@louiz.org>2013-11-02 16:04:10 +0100
commit4027ef8c00ee2a5b808c11c7f3ae50cda117d92a (patch)
treecce962840cc301e98a26ad4679b163f044db1af0 /src/network/poller.cpp
parent64c1b28ce211f899ca0fbcae5049532e129f19c1 (diff)
downloadbiboumi-4027ef8c00ee2a5b808c11c7f3ae50cda117d92a.tar.gz
biboumi-4027ef8c00ee2a5b808c11c7f3ae50cda117d92a.tar.bz2
biboumi-4027ef8c00ee2a5b808c11c7f3ae50cda117d92a.tar.xz
biboumi-4027ef8c00ee2a5b808c11c7f3ae50cda117d92a.zip
Basic IRC message parsing/sending
Diffstat (limited to 'src/network/poller.cpp')
-rw-r--r--src/network/poller.cpp34
1 files changed, 30 insertions, 4 deletions
diff --git a/src/network/poller.cpp b/src/network/poller.cpp
index c7d9eb2..7ab8bc3 100644
--- a/src/network/poller.cpp
+++ b/src/network/poller.cpp
@@ -59,12 +59,39 @@ void Poller::remove_socket_handler(const socket_t socket)
}
}
+void Poller::watch_send_events(const SocketHandler* const socket_handler)
+{
+#if POLLER == POLL
+ for (size_t i = 0; i <= this->nfds; ++i)
+ {
+ if (this->fds[i].fd == socket_handler->get_socket())
+ {
+ this->fds[i].events = POLLIN|POLLOUT;
+ return;
+ }
+ }
+#endif
+ throw std::runtime_error("Cannot watch a non-registered socket for send events");
+}
+
+void Poller::stop_watching_send_events(const SocketHandler* const socket_handler)
+{
+#if POLLER == POLL
+ for (size_t i = 0; i <= this->nfds; ++i)
+ {
+ if (this->fds[i].fd == socket_handler->get_socket())
+ {
+ this->fds[i].events = POLLIN;
+ return;
+ }
+ }
+#endif
+ throw std::runtime_error("Cannot watch a non-registered socket for send events");
+}
+
void Poller::poll()
{
#if POLLER == POLL
- std::cout << "Polling:" << std::endl;
- for (size_t i = 0; i < this->nfds; ++i)
- std::cout << "pollfd[" << i << "]: (" << this->fds[i].fd << ")" << std::endl;
int res = ::poll(this->fds, this->nfds, -1);
if (res < 0)
{
@@ -93,4 +120,3 @@ void Poller::poll()
}
#endif
}
-