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 bcb3018..b634510 100644
--- a/src/server.c
+++ b/src/server.c
@@ -189,13 +189,23 @@
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 @@
/* 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);
}
/*