1
0
mirror of https://github.com/anope/anope.git synced 2026-07-05 12:43:13 +02:00

Made the epoll socket engine handle MarkWriteable and ClearWriteable events

This commit is contained in:
Adam
2010-08-01 20:43:48 -04:00
parent 90976b6672
commit 4fe1c9233c
+27 -1
View File
@@ -47,7 +47,7 @@ class SocketEngineEPoll : public SocketEngineBase
memset(&ev, 0, sizeof(ev));
ev.events = EPOLLIN | EPOLLOUT;
ev.events = EPOLLIN;
ev.data.fd = s->GetSock();
if (epoll_ctl(EngineHandle, EPOLL_CTL_ADD, ev.data.fd, &ev) == -1)
@@ -80,6 +80,32 @@ class SocketEngineEPoll : public SocketEngineBase
--SocketCount;
}
void MarkWriteable(Socket *s)
{
epoll_event ev;
memset(&ev, 0, sizeof(ev));
ev.events = EPOLLIN | EPOLLOUT;
ev.data.fd = s->GetSock();
if (epoll_ctl(EngineHandle, EPOLL_CTL_ADD, ev.data.fd, &ev) == -1)
Alog() << "Unable to mark fd " << ev.data.fd << " as writable in socketengine epoll: " << strerror(errno);
}
void ClearWriteable(Socket *s)
{
epoll_event ev;
memset(&ev, 0, sizeof(ev));
ev.events = EPOLLIN;
ev.data.fd = s->GetSock();
if (epoll_ctl(EngineHandle, EPOLL_CTL_ADD, ev.data.fd, &ev) == -1)
Alog() << "Unable to mark fd " << ev.data.fd << " as unwritable in socketengine epoll: " << strerror(errno);
}
void Process()
{
int total = epoll_wait(EngineHandle, events, max - 1, Config.ReadTimeout * 1000);