set_delayed_queue_event
Name
set_delayed_queue_event
Synopsis
#include "hooks/core/set_delayed_queue_event.h"
| int **set_delayed_queue_event** (
| closure, | |
| | mq, | |
| | now)
; | |
void * <var class="pdparam">closure</var>
;
mail_queue * <var class="pdparam">mq</var>
;
struct timeval * <var class="pdparam">now</var>
;
| int **has_core_set_delayed_queue_event_hook** (
| )
; | |
| void **register_core_set_delayed_queue_event_hook_first** (
| hook, | |
| | closure)
; | |
ec_hook_core_set_delayed_queue_event_func_t <var class="pdparam">hook</var>
;
void *<var class="pdparam">closure</var>
;
| void **register_core_set_delayed_queue_event_hook_last** (
| hook, | |
| | closure)
; | |
ec_hook_core_set_delayed_queue_event_func_t <var class="pdparam">hook</var>
;
void *<var class="pdparam">closure</var>
;
| int **call_core_set_delayed_queue_event_hook** (
| mq, | |
| | now)
; | |
Description
This hook is called to schedule a mail queue maintainer for a mail queue. The default implementation will cancel the maintainer if the queue is empty, else if there are messages in the active queue it will schedule for now + delayed_queue_scan_interval, else (delayed messages only) it will schedule for the next attempt time of the first delayed message or now + delayed_queue_scan_interval, whichever is sooner. You can override this behavior by registering this hook and returning nonzero when you are done; returning 0 will cause the default implementation to run. To cancel an existing maintainer event, you may call mail_queue_stop_maintainer. When creating a mailtainer, the timed event worker must be mail_queue_maintainer, and the closure must be the domain name, which you allocate as a MEMTYPE_STRING. now
may be NULL, in which case you should call get_now to get the time.