annotate src/lib/log-throttle.h @ 23007:36e01285b5b8

lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Mon, 18 Mar 2019 00:52:37 +0100
parents 3e02c55136a6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20582
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
1 #ifndef LOG_THROTTLE_H
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
2 #define LOG_THROTTLE_H
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
3
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
4 struct log_throttle_settings {
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
5 /* Start throttling after we reach this many log events/interval. */
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
6 unsigned int throttle_at_max_per_interval;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
7 /* Throttling continues until there's only this many or below
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
8 log events/interval. */
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
9 unsigned int unthrottle_at_max_per_interval;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
10 /* Interval unit in milliseconds. The throttled-callback is also called
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
11 at this interval. Default (0) is 1000 milliseconds. */
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
12 unsigned int interval_msecs;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
13 };
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
14
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
15 typedef void
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
16 log_throttle_callback_t(unsigned int new_events_count, void *context);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
17
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
18 struct log_throttle *
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
19 log_throttle_init(const struct log_throttle_settings *set,
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
20 log_throttle_callback_t *callback, void *context);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
21 #define log_throttle_init(set, callback, context) \
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
22 log_throttle_init(set + \
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
23 CALLBACK_TYPECHECK(callback, void (*)(unsigned int, typeof(context))), \
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
24 (log_throttle_callback_t *)callback, context)
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
25 void log_throttle_deinit(struct log_throttle **throttle);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
26
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
27 /* Increase event count. Returns TRUE if the event should be logged,
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
28 FALSE if it's throttled. ioloop_timeval is used to determine the current
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
29 time. */
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
30 bool log_throttle_accept(struct log_throttle *throttle);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
31
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
32 #endif