Lines Matching defs:notify

9 #include "service-process-notify.h"
24 struct service_process_notify *notify;
26 notify = i_new(struct service_process_notify, 1);
27 notify->fd = fd;
28 notify->write_callback = write_callback;
30 i_array_init(&notify->processes, 64);
31 notify->process_queue = aqueue_init(&notify->processes.arr);
32 return notify;
35 static void service_process_notify_reset(struct service_process_notify *notify)
40 if (notify->io_write == NULL)
43 processes = array_idx_modifiable(&notify->processes, 0);
44 count = aqueue_count(notify->process_queue);
46 process = processes[aqueue_idx(notify->process_queue, i)];
49 aqueue_clear(notify->process_queue);
50 array_clear(&notify->processes);
52 io_remove(&notify->io_write);
55 static void notify_flush(struct service_process_notify *notify)
59 while (aqueue_count(notify->process_queue) > 0) {
60 processes = array_idx_modifiable(&notify->processes, 0);
61 process = processes[aqueue_idx(notify->process_queue, 0)];
63 if (notify->write_callback(notify->fd, process) < 0) {
65 service_process_notify_reset(notify);
69 aqueue_delete_tail(notify->process_queue);
71 io_remove(&notify->io_write);
76 struct service_process_notify *notify = *_notify;
80 service_process_notify_reset(notify);
81 io_remove(&notify->io_write);
82 aqueue_deinit(&notify->process_queue);
83 array_free(&notify->processes);
84 i_free(notify);
87 void service_process_notify_add(struct service_process_notify *notify,
90 if (notify->write_callback(notify->fd, process) < 0) {
94 if (notify->io_write == NULL) {
95 notify->io_write = io_add(notify->fd, IO_WRITE,
96 notify_flush, notify);
98 aqueue_append(notify->process_queue, &process);