]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Add EVENT_CALLBACK_TYPE_CREATE to call a callback on event creation
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 5 Sep 2019 08:59:20 +0000 (11:59 +0300)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 5 Sep 2019 13:29:28 +0000 (13:29 +0000)
It's not called for event_dup() or event_flatten(), because those are based
on events that were already created.

src/lib-master/stats-client.c
src/lib/lib-event-private.h
src/lib/lib-event.c

index 9c340fc2eea859ae3fd45beb91cab606433388f6..281b876b099b68150674ef170d172f859288c856 100644 (file)
@@ -226,6 +226,8 @@ stats_event_callback(struct event *event, enum event_callback_type type,
                return TRUE;
 
        switch (type) {
+       case EVENT_CALLBACK_TYPE_CREATE:
+               break;
        case EVENT_CALLBACK_TYPE_SEND:
                stats_client_send_event(client, event, ctx);
                break;
index 175f19c3e57eee01962df64981b76bef2dd5da8e..e61168d9f7e7643d4c4546e48440ff7ccc350d08 100644 (file)
@@ -43,6 +43,8 @@ struct event {
 };
 
 enum event_callback_type {
+       /* Event was just created */
+       EVENT_CALLBACK_TYPE_CREATE,
        /* Event is being sent */
        EVENT_CALLBACK_TYPE_SEND,
        /* Event is being freed */
@@ -72,7 +74,7 @@ struct event_category *event_category_find_registered(const char *name);
 struct event_category *const *
 event_get_registered_categories(unsigned int *count_r);
 
-/* Register callback to be called whenever events are sent. */
+/* Register callback to be called for event's different states. */
 void event_register_callback(event_callback_t *callback);
 void event_unregister_callback(event_callback_t *callback);
 
index f2c8add811be47b8bbb75dd7344ae010cd4a1e63..aa08e4636435eee326a55327483ff1ce741323d9 100644 (file)
@@ -346,7 +346,11 @@ event_create_internal(struct event *parent, const char *source_filename,
 struct event *event_create(struct event *parent, const char *source_filename,
                           unsigned int source_linenum)
 {
-       return event_create_internal(parent, source_filename, source_linenum);
+       struct event *event;
+
+       event = event_create_internal(parent, source_filename, source_linenum);
+       (void)event_call_callbacks_noargs(event, EVENT_CALLBACK_TYPE_CREATE);
+       return event;
 }
 
 #undef event_create_passthrough