diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-15 13:16:20 -0600 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-15 13:37:11 -0600 |
commit | a226a1adf5e07f4281fcf95d3a69b7964159a95a (patch) | |
tree | ed6c3ad462e1c43a44a49c2ec8f8f59f317a0ad8 /lib9p/srv.c | |
parent | be7a0efac25f186cd0b5ad49e9d001e99d025b74 (diff) |
lib9p: srv.c: Simplify handler calling
Diffstat (limited to 'lib9p/srv.c')
-rw-r--r-- | lib9p/srv.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/lib9p/srv.c b/lib9p/srv.c index 1a6bbb1..dad1814 100644 --- a/lib9p/srv.c +++ b/lib9p/srv.c @@ -612,8 +612,6 @@ _HANDLER_PROTO(sread); _HANDLER_PROTO(swrite); #endif -typedef void (*tmessage_handler)(struct srv_req *, void *); - void lib9p_srv_worker(struct srv_req *ctx) { uint8_t *host_req = NULL; @@ -631,35 +629,35 @@ void lib9p_srv_worker(struct srv_req *ctx) { srv_msglog(ctx, typ, host_req); /* Handle it. ********************************************************/ - tmessage_handler handler; +#define CASE(typ) case LIB9P_TYP_##typ: handle_##typ(ctx, (void *)host_req); break LM_PARTIAL_SWITCH (typ) { - case LIB9P_TYP_Tversion: handler = (tmessage_handler)handle_Tversion; break; + CASE(Tversion); #if _LIB9P_ENABLE_stat - case LIB9P_TYP_Tauth: handler = (tmessage_handler)handle_Tauth; break; - case LIB9P_TYP_Tattach: handler = (tmessage_handler)handle_Tattach; break; - case LIB9P_TYP_Tflush: handler = (tmessage_handler)handle_Tflush; break; - case LIB9P_TYP_Twalk: handler = (tmessage_handler)handle_Twalk; break; - case LIB9P_TYP_Topen: handler = (tmessage_handler)handle_Topen; break; - case LIB9P_TYP_Tcreate: handler = (tmessage_handler)handle_Tcreate; break; - case LIB9P_TYP_Tread: handler = (tmessage_handler)handle_Tread; break; - case LIB9P_TYP_Twrite: handler = (tmessage_handler)handle_Twrite; break; - case LIB9P_TYP_Tclunk: handler = (tmessage_handler)handle_Tclunk; break; - case LIB9P_TYP_Tremove: handler = (tmessage_handler)handle_Tremove; break; - case LIB9P_TYP_Tstat: handler = (tmessage_handler)handle_Tstat; break; - case LIB9P_TYP_Twstat: handler = (tmessage_handler)handle_Twstat; break; + CASE(Tauth); + CASE(Tattach); + CASE(Tflush); + CASE(Twalk); + CASE(Topen); + CASE(Tcreate); + CASE(Tread); + CASE(Twrite); + CASE(Tclunk); + CASE(Tremove); + CASE(Tstat); + CASE(Twstat); #endif #if CONFIG_9P_ENABLE_9P2000_p9p - case LIB9P_TYP_Topenfd: handler = (tmessage_handler)handle_Topenfd; break; + CASE(Topenfd); #endif #if CONFIG_9P_ENABLE_9P2000_e - case LIB9P_TYP_Tsession: handler = (tmessage_handler)handle_Tsession; break; - case LIB9P_TYP_Tsread: handler = (tmessage_handler)handle_Tsread; break; - case LIB9P_TYP_Tswrite: handler = (tmessage_handler)handle_Tswrite; break; + CASE(Tsession); + CASE(Tsread); + CASE(Tswrite); #endif +#undef CASE default: assert_notreached("lib9p_Tmsg_validate() should have rejected unknown typ"); } - handler(ctx, (void *)host_req); assert(ctx->responded); /* Release resources. ************************************************/ |