From: Aurelien DARRAGON Date: Tue, 25 Apr 2023 08:44:41 +0000 (+0200) Subject: MINOR: server/event_hdl: publish macro helper X-Git-Tag: v2.8-dev10~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=306a5fc98724cb164ead712425c095c19c188274;p=thirdparty%2Fhaproxy.git MINOR: server/event_hdl: publish macro helper add a macro helper to help publish server events to global and per-server subscription list at once since all server events support both subscription modes. --- diff --git a/src/server.c b/src/server.c index bcb3018d02..b634510e69 100644 --- a/src/server.c +++ b/src/server.c @@ -189,13 +189,23 @@ static inline void _srv_event_hdl_prepare(struct event_hdl_cb_data_server *cb_da cb_data->unsafe.srv_lock = !thread_isolate; } -/* general server event publishing: +/* server event publishing helper: publish in both global and + * server dedicated subscription list. + */ +#define _srv_event_hdl_publish(e, d, s) \ + ({ \ + /* publish in server dedicated sub list */ \ + event_hdl_publish(&s->e_subs, e, EVENT_HDL_CB_DATA(&d));\ + /* publish in global subscription list */ \ + event_hdl_publish(NULL, e, EVENT_HDL_CB_DATA(&d)); \ + }) + +/* General server event publishing: * Use this to publish EVENT_HDL_SUB_SERVER family type event - * from srv facility - * Event will be published in both global subscription list and - * server dedicated subscription list - * server ptr must be valid - * must be called with srv lock or under thread_isolate + * from srv facility. + * + * server ptr must be valid. + * Must be called with srv lock or under thread_isolate. */ static void srv_event_hdl_publish(struct event_hdl_sub_type event, struct server *srv, uint8_t thread_isolate) @@ -204,10 +214,7 @@ static void srv_event_hdl_publish(struct event_hdl_sub_type event, /* prepare event data */ _srv_event_hdl_prepare(&cb_data, srv, thread_isolate); - /* publish in server dedicated sub list */ - event_hdl_publish(&srv->e_subs, event, EVENT_HDL_CB_DATA(&cb_data)); - /* publish in global subscription list */ - event_hdl_publish(NULL, event, EVENT_HDL_CB_DATA(&cb_data)); + _srv_event_hdl_publish(event, cb_data, srv); } /*