Mercurial > dovecot > core-2.2
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 |
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 |