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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user