From e339f2d269fcaffed7beed67c3995fe3b67393eb Mon Sep 17 00:00:00 2001 From: Guangxiong Lin Date: Sat, 17 Dec 2022 21:24:04 +0800 Subject: Support on_connect function in server lib --- src/acceptor.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/acceptor.c') diff --git a/src/acceptor.c b/src/acceptor.c index ca7bfb4..2d883d1 100644 --- a/src/acceptor.c +++ b/src/acceptor.c @@ -13,6 +13,7 @@ struct conn_acceptor { tsocket_t *sock; evloop_t **evloops; int nevloops; + connection_callback_func_t conn_callback_func; }; conn_acceptor_t *conn_acceptor_create(tsocket_t *sock, evloop_t **evloops, int nevloops) @@ -24,6 +25,7 @@ conn_acceptor_t *conn_acceptor_create(tsocket_t *sock, evloop_t **evloops, int n acceptor->sock = sock; acceptor->evloops = evloops; acceptor->nevloops = nevloops; + acceptor->conn_callback_func = NULL; return acceptor; } @@ -42,7 +44,7 @@ static void conn_acceptor_accept(conn_acceptor_t *ca) return; } - event_t *conn_ev = connection_create_event(conn_sock); + event_t *conn_ev = connection_event_create(conn_sock, ca->conn_callback_func); // TODO: Use a better way to decide which sub reactor to use. int ind = conn_sock->fd % ca->nevloops; @@ -55,18 +57,22 @@ static void conn_acceptor_accept(conn_acceptor_t *ca) conn_sock->fd, conn_sock->addr, conn_sock->port); } -static void conn_acceptor_destroy(conn_acceptor_t *ca) +void conn_acceptor_destroy(conn_acceptor_t *ca) { tsocket_destroy(ca->sock); free(ca); } -event_t *conn_acceptor_event_create(struct tsocket *sock, evloop_t **evloops, int nevloops) +event_t *conn_acceptor_event_create(conn_acceptor_t *acceptor) { - conn_acceptor_t *acceptor = conn_acceptor_create(sock, evloops, nevloops); - event_t *ev = event_create(acceptor, sock->fd, + event_t *ev = event_create(acceptor, acceptor->sock->fd, (evloop_process_func_t) conn_acceptor_accept, (evloop_destroy_func_t) conn_acceptor_destroy); return ev; } + +void conn_acceptor_on_connect(conn_acceptor_t *acceptor, connection_callback_func_t func) +{ + acceptor->conn_callback_func = func; +} -- cgit v1.2.3