From: Egor Date: Thu, 5 Jun 2025 14:57:57 +0000 (+0300) Subject: netpoll: use UV_READABLE constants directly X-Git-Url: https://git.patchysicp.xyz/?a=commitdiff_plain;h=928a9d3b8f07f1e64600018c552d87e51818d9c1;p=patchyircd.git netpoll: use UV_READABLE constants directly --- diff --git a/src/main.cpp b/src/main.cpp index bc558a6..c316fe5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -308,7 +308,7 @@ int main(int argc, char *argv[]) for (int i = 0; i < listener_count; i++) { net_nonblock(listeners[i].sock); netpoll::add(listeners[i].sock, SOCKTYPE_LISTENER, &listeners[i]); - netpoll::reg(listeners[i].sock, NETPOLL_IN); + netpoll::reg(listeners[i].sock, UV_READABLE); } FILE *f = fopen(getdatafile("init.txt"), "rb" FOPEN_CLOEXEC); @@ -397,13 +397,13 @@ int main(int argc, char *argv[]) while ((ev = netpoll::get(&pfd))) { switch (pfd.type) { case SOCKTYPE_LISTENER: - if (ev & NETPOLL_IN) + if (ev & UV_READABLE) accept_from_sock((struct listener *)pfd.assoc); break; case SOCKTYPE_CLIENT: { struct client_data *cl = (struct client_data *)pfd.assoc; - int isr = ev & NETPOLL_IN; - int isw = ev & NETPOLL_OUT; + int isr = ev & UV_READABLE; + int isw = ev & UV_WRITABLE; /* NOTE: recvProc can kill the client, so writing should be done first. */ if ((cl->want_read_for_write && isr) || (cl->want_write_for_write && isw)) sendClient(cl, 0, 0); @@ -413,8 +413,8 @@ int main(int argc, char *argv[]) } case SOCKTYPE_DYING: { struct client_data *cl = (struct client_data *)pfd.assoc; - int isr = ev & NETPOLL_IN; - int isw = ev & NETPOLL_OUT; + int isr = ev & UV_READABLE; + int isw = ev & UV_WRITABLE; if (cl->wbufLen) if ((cl->want_read_for_write && isr) || (cl->want_write_for_write && isw)) sendClient(cl, 0, 0); diff --git a/src/net.cpp b/src/net.cpp index 749a1c5..e9b6177 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -22,14 +22,14 @@ void update_poll_reg(struct client_data *cl) */ if (!cl->dying) { if (!cl->want_write_for_read || cl->want_read_for_write) - nreg |= NETPOLL_IN; + nreg |= UV_READABLE; if (cl->want_write_for_read || cl->want_write_for_write) - nreg |= NETPOLL_OUT; + nreg |= UV_WRITABLE; } else { if (cl->want_read_for_write || cl->want_read_for_close) - nreg |= NETPOLL_IN; + nreg |= UV_READABLE; if (cl->want_write_for_write || cl->want_write_for_close) - nreg |= NETPOLL_OUT; + nreg |= UV_WRITABLE; } if (nreg != cl->poll_reg) { netpoll::reg(cl->FD, nreg); diff --git a/src/netpoll.cpp b/src/netpoll.cpp index c12b4a7..40bdb71 100644 --- a/src/netpoll.cpp +++ b/src/netpoll.cpp @@ -3,7 +3,6 @@ #include "netpoll.h" #include "util.h" -#include #include namespace netpoll { @@ -90,15 +89,6 @@ static void cb(uv_poll_t *handle, int status, int events) } lastptr = 0; } -static void reg_impl(int i, int ev) -{ - int events = 0; - if (ev & NETPOLL_IN) - events |= UV_READABLE; - if (ev & NETPOLL_OUT) - events |= UV_WRITABLE; - uvpoll[i]->events = events; -} void begin(void) { for (int i = 0; i < nfds; i++) { @@ -117,11 +107,7 @@ int get(struct net_pollfd *out) while (!ev) { if (lastptr == nfds) return 0; - int pev = uvpoll[lastptr]->revents; - if (pev & UV_READABLE) - ev |= NETPOLL_IN; - if (pev & UV_WRITABLE) - ev |= NETPOLL_OUT; + ev = uvpoll[lastptr]->revents & (UV_READABLE | UV_WRITABLE); lastptr++; } *out = fds[lastptr-1]; @@ -156,14 +142,14 @@ void add(SOCKET fd, int type, void *assoc) void del_and_close(SOCKET fd) { int i = search(fd, false); - reg_impl(i, 0); + uvpoll[i]->events = 0; del_impl(i); memmove(fds+i, fds+i+1, sizeof(fds[0])*(nfds-(i+1))); nfds--; } void reg(SOCKET fd, int ev) { - reg_impl(search(fd, false), ev); + uvpoll[search(fd, false)]->events = ev & (UV_READABLE | UV_WRITABLE); } void change_type(SOCKET fd, int type) { diff --git a/src/netpoll.h b/src/netpoll.h index ecdf8f2..6f72823 100644 --- a/src/netpoll.h +++ b/src/netpoll.h @@ -3,6 +3,7 @@ #ifndef NETPOLL_H_ #define NETPOLL_H_ #include "netsock.h" +#include namespace netpoll { struct net_pollfd { void *assoc; @@ -18,8 +19,6 @@ void change_type(SOCKET fd, int type); void begin(void); int get(struct net_pollfd *out); } -#define NETPOLL_IN 1 -#define NETPOLL_OUT 2 #define SOCKTYPE_LISTENER 0 #define SOCKTYPE_SELFPIPE 1