]> PatchyGit - patchyircd.git/commitdiff
netpoll: move into namespace
authorEgor <egor@patchysicp.xyz>
Mon, 17 Mar 2025 18:39:05 +0000 (20:39 +0200)
committerEgor <egor@patchysicp.xyz>
Mon, 17 Mar 2025 18:39:05 +0000 (20:39 +0200)
src/main.cpp
src/net.cpp
src/netpoll.cpp
src/netpoll.h

index 0f1dd15..8ef6a35 100644 (file)
@@ -150,7 +150,7 @@ static void accept_from_sock(struct listener *listener)
                }
                if (!cl->hostname)
                        abort();
-               net_poll_add(cl->FD, SOCKTYPE_CLIENT, cl);
+               netpoll::add(cl->FD, SOCKTYPE_CLIENT, cl);
                update_poll_reg(cl);
                copy_strf(&databuf, ":%s NOTICE * :Hello welcome to PatchyIRCD!\r\n", hostname);
                sendbuf(cl);
@@ -168,7 +168,7 @@ int main(int argc, char *argv[])
        fprintf(stderr, "[PatchyIRCD]: Starting up...\n");
 
        net_init();
-       net_poll_init();
+       netpoll::init();
        job_init();
 #ifdef HAS_LUA
        admin_init();
@@ -233,8 +233,8 @@ int main(int argc, char *argv[])
 
        for (int i = 0; i < listener_count; i++) {
                net_nonblock(listeners[i].sock);
-               net_poll_add(listeners[i].sock, SOCKTYPE_LISTENER, &listeners[i]);
-               net_poll_reg(listeners[i].sock, NETPOLL_IN);
+               netpoll::add(listeners[i].sock, SOCKTYPE_LISTENER, &listeners[i]);
+               netpoll::reg(listeners[i].sock, NETPOLL_IN);
        }
 
        FILE *f = fopen(getdatafile("init.txt"), "rb" FOPEN_CLOEXEC);
@@ -300,7 +300,7 @@ int main(int argc, char *argv[])
                if (is_siginted) {
                        fprintf(stderr, "[PatchyIRCD]: Cleaning up...\n");
                        for (int i = 0; i < listener_count; i++) {
-                               net_poll_del_and_close(listeners[i].sock);
+                               netpoll::del_and_close(listeners[i].sock);
                        }
                        listener_count = 0;
                        for (struct client_data *cl = clients; cl;) {
@@ -315,7 +315,7 @@ int main(int argc, char *argv[])
                }
 
                job_process_begin();
-               if (net_poll_begin() == -1) {
+               if (netpoll::begin() == -1) {
                        if (errno == EINTR) {
                                job_process_end();
                                continue;
@@ -325,8 +325,8 @@ int main(int argc, char *argv[])
                }
                job_process_end();
                int ev;
-               struct net_pollfd pfd;
-               while ((ev = net_poll_get(&pfd))) {
+               netpoll::net_pollfd pfd;
+               while ((ev = netpoll::get(&pfd))) {
                        switch (pfd.type) {
                        case SOCKTYPE_LISTENER:
                                if (ev & NETPOLL_IN)
@@ -374,7 +374,7 @@ int main(int argc, char *argv[])
        admin_fini();
 #endif
        job_fini();
-       net_poll_fini();
+       netpoll::fini();
        net_cleanup();
 #ifdef HAS_TLS
        tls_free(tls_ctx);
index b8b2fa9..e2246dd 100644 (file)
@@ -29,7 +29,7 @@ void update_poll_reg(struct client_data *cl)
                        nreg |= NETPOLL_OUT;
        }
        if (nreg != cl->poll_reg) {
-               net_poll_reg(cl->FD, nreg);
+               netpoll::reg(cl->FD, nreg);
                cl->poll_reg = nreg;
        }
 }
@@ -61,7 +61,7 @@ void killConnection(struct client_data *cl, int byChoice)
        cl->next = dyingclients;
        dyingclients = cl;
        if (cl->FD != INVALID_SOCKET)
-               net_poll_change_type(cl->FD, SOCKTYPE_DYING);
+               netpoll::change_type(cl->FD, SOCKTYPE_DYING);
        update_poll_reg(cl);
        /* Part all channels */
        for (auto chan : cl->channels.pop_view())
@@ -112,7 +112,7 @@ void killConnectionPart2(struct client_data *cl)
                }
 #endif
                shutdown(cl->FD, SHUT_RDWR);
-               net_poll_del_and_close(cl->FD);
+               netpoll::del_and_close(cl->FD);
        }
        /* Remove the client from the dyingclients chain */
        for (struct client_data **next = &dyingclients; *next; next = &(*next)->next) {
index 23f323c..870256d 100644 (file)
@@ -1,5 +1,6 @@
 #include "netpoll.h"
 
+namespace netpoll {
 #define NETPOLL_MAXFDS 1024
 static struct net_pollfd fds[NETPOLL_MAXFDS] = {};
 static int nfds = 0;
@@ -7,13 +8,13 @@ static int nfds = 0;
 #if defined(NETPOLL_USE_POLL)
 static struct pollfd pollfds[NETPOLL_MAXFDS] = {};
 static int lastptr = 0;
-void net_poll_init(void)
+void init(void)
 {
 }
-void net_poll_fini(void)
+void fini(void)
 {
 }
-static void net_poll_add_impl(int i)
+static void add_impl(int i)
 {
        memmove(pollfds+i+1, pollfds+i, sizeof(pollfds[0])*(nfds-1-i));
        pollfds[i].fd = fds[i].fd;
@@ -22,13 +23,13 @@ static void net_poll_add_impl(int i)
        if (lastptr >= i)
                lastptr++;
 }
-static void net_poll_del_impl(int i)
+static void del_impl(int i)
 {
        memmove(pollfds+i, pollfds+i+1, sizeof(pollfds[0])*(nfds-(i+1)));
        if (lastptr > i)
                lastptr--;
 }
-static void net_poll_reg_impl(int i, int ev)
+static void reg_impl(int i, int ev)
 {
        pollfds[i].events = 0;
        if (ev & NETPOLL_IN)
@@ -36,7 +37,7 @@ static void net_poll_reg_impl(int i, int ev)
        if (ev & NETPOLL_OUT)
                pollfds[i].events = POLLOUT;
 }
-int net_poll_begin(void)
+int begin(void)
 {
        sigset_t mask;
        sigprocmask(0, 0, &mask);
@@ -45,7 +46,7 @@ int net_poll_begin(void)
        lastptr = 0;
        return rv;
 }
-int net_poll_get(struct net_pollfd *out)
+int get(struct net_pollfd *out)
 {
        int ev = 0;
        while (!ev) {
@@ -92,12 +93,12 @@ namespace uvalloc {
                        put(&uvpollbuf[i]);
        }
 }
-void net_poll_init(void)
+void init(void)
 {
        uvalloc::init();
        uvloop = uv_default_loop();
 }
-void net_poll_fini(void)
+void fini(void)
 {
        // get rid of closing handles
        uv_run(uv_default_loop(), UV_RUN_NOWAIT);
@@ -105,7 +106,7 @@ void net_poll_fini(void)
                uv_print_all_handles(uvloop, stderr);
        uv_library_shutdown();
 }
-static void net_poll_add_impl(int i)
+static void add_impl(int i)
 {
        struct polldata *poll = uvalloc::get();
        memmove(uvpoll+i+1, uvpoll+i, sizeof(uvpoll[0])*(nfds-1-i));
@@ -117,7 +118,7 @@ static void net_poll_add_impl(int i)
        if (lastptr >= i)
                lastptr++;
 }
-static void net_poll_del_impl(int i)
+static void del_impl(int i)
 {
        struct polldata *poll = uvpoll[i];
        memmove(uvpoll+i, uvpoll+i+1, sizeof(uvpoll[0])*(nfds-(i+1)));
@@ -129,7 +130,7 @@ static void net_poll_del_impl(int i)
        if (lastptr > i)
                lastptr--;
 }
-static void net_poll_cb(uv_poll_t *handle, int status, int events)
+static void cb(uv_poll_t *handle, int status, int events)
 {
        struct polldata *poll = container_of(handle, struct polldata, uv);
        if (status == 0) {
@@ -137,12 +138,12 @@ static void net_poll_cb(uv_poll_t *handle, int status, int events)
        }
        uv_poll_stop(handle);
        if (status == -EBADF) {
-               fprintf(stderr, "net_poll_cb: %d EBADF!\n", poll->fd);
-               net_poll_del_and_close(poll->fd);
+               fprintf(stderr, "netpoll::cb: %d EBADF!\n", poll->fd);
+               del_and_close(poll->fd);
        }
        lastptr = 0;
 }
-static void net_poll_reg_impl(int i, int ev)
+static void reg_impl(int i, int ev)
 {
        int events = 0;
        if (ev & NETPOLL_IN)
@@ -151,16 +152,16 @@ static void net_poll_reg_impl(int i, int ev)
                events |= UV_WRITABLE;
        uvpoll[i]->events = events;
 }
-int net_poll_begin(void)
+int begin(void)
 {
        for (int i = 0; i < nfds; i++) {
-               uv_poll_start(&uvpoll[i]->uv, uvpoll[i]->events, net_poll_cb);
+               uv_poll_start(&uvpoll[i]->uv, uvpoll[i]->events, cb);
                uvpoll[i]->revents = 0;
        }
        uv_run(uvloop, UV_RUN_ONCE);
        return 0;
 }
-int net_poll_get(struct net_pollfd *out)
+int get(struct net_pollfd *out)
 {
        int ev = 0;
        while (!ev) {
@@ -195,68 +196,69 @@ static int search(SOCKET fd) {
 }
 #define IS_FOUND(i, f) ((i) < nfds && fds[i].fd == (f))
 
-void net_poll_add(SOCKET fd, int type, void *assoc)
+void add(SOCKET fd, int type, void *assoc)
 {
        if (fd == INVALID_SOCKET) {
-               fprintf(stderr, "net_poll_add: INVALID_SOCKET\n");
+               fprintf(stderr, "netpoll::add: INVALID_SOCKET\n");
                abort();
        }
        int i = search(fd);
        if (IS_FOUND(i, fd)) {
-               fprintf(stderr, "net_poll_add: socket already added\n");
+               fprintf(stderr, "netpoll::add: socket already added\n");
                abort();
        }
        if (nfds == NETPOLL_MAXFDS) {
-               fprintf(stderr, "net_poll_add: NETPOLL_MAXFDS limit\n");
+               fprintf(stderr, "netpoll::add: NETPOLL_MAXFDS limit\n");
                abort();
        }
        memmove(fds+i+1, fds+i, sizeof(fds[0])*(nfds-i));
        nfds++;
        fds[i] = (struct net_pollfd){ .assoc = assoc, .fd = fd, .type = type };
-       net_poll_add_impl(i);
+       add_impl(i);
 }
-void net_poll_del_and_close(SOCKET fd)
+void del_and_close(SOCKET fd)
 {
        if (fd == INVALID_SOCKET) {
-               fprintf(stderr, "net_poll_del_and_close: INVALID_SOCKET\n");
+               fprintf(stderr, "netpoll::del_and_close: INVALID_SOCKET\n");
                abort();
        }
        int i = search(fd);
        if (!IS_FOUND(i, fd)) {
-               fprintf(stderr, "net_poll_del_and_close: socket not added\n");
+               fprintf(stderr, "netpoll::del_and_close: socket not added\n");
                abort();
        }
-       net_poll_reg_impl(i, 0);
-       net_poll_del_impl(i);
+       reg_impl(i, 0);
+       del_impl(i);
        memmove(fds+i, fds+i+1, sizeof(fds[0])*(nfds-(i+1)));
        nfds--;
 #ifndef NETPOLL_USE_LIBUV
        closesocket(fd);
 #endif
 }
-void net_poll_reg(SOCKET fd, int ev)
+void reg(SOCKET fd, int ev)
 {
        if (fd == INVALID_SOCKET) {
-               fprintf(stderr, "net_poll_reg: INVALID_SOCKET\n");
+               fprintf(stderr, "netpoll::reg: INVALID_SOCKET\n");
                abort();
        }
        int i = search(fd);
        if (!IS_FOUND(i, fd)) {
-               fprintf(stderr, "net_poll_reg: socket not added\n");
+               fprintf(stderr, "netpoll::reg: socket not added\n");
                abort();
        }
-       net_poll_reg_impl(i, ev);
+       reg_impl(i, ev);
 }
-void net_poll_change_type(SOCKET fd, int type)
+void change_type(SOCKET fd, int type)
 {
        if (fd == INVALID_SOCKET) {
-               fprintf(stderr, "net_poll_change_type: INVALID_SOCKET\n");
+               fprintf(stderr, "netpoll::change_type: INVALID_SOCKET\n");
                abort();
        }
        int i = search(fd);
        if (!IS_FOUND(i, fd)) {
-               fprintf(stderr, "net_poll_change_type: socket not added\n");
+               fprintf(stderr, "netpoll::change_type: socket not added\n");
                abort();
        }
        fds[i].type = type;
 }
+}
index e4420ec..b0c393b 100644 (file)
@@ -1,19 +1,21 @@
 #ifndef NETPOLL_H_
 #define NETPOLL_H_
 #include "netsock.h"
+namespace netpoll {
 struct net_pollfd {
        void *assoc;
        SOCKET fd;
        int type;
 };
-void net_poll_init(void);
-void net_poll_fini(void);
-void net_poll_add(SOCKET fd, int type, void *assoc);
-void net_poll_del_and_close(SOCKET fd);
-void net_poll_reg(SOCKET fd, int ev);
-void net_poll_change_type(SOCKET fd, int type);
-int net_poll_begin(void);
-int net_poll_get(struct net_pollfd *out);
+void init(void);
+void fini(void);
+void add(SOCKET fd, int type, void *assoc);
+void del_and_close(SOCKET fd);
+void reg(SOCKET fd, int ev);
+void change_type(SOCKET fd, int type);
+int begin(void);
+int get(struct net_pollfd *out);
+}
 #define NETPOLL_IN 1
 #define NETPOLL_OUT 2