annotate src/lib/ioloop-notify-fd.c @ 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 cb108f786fb4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22713
cb108f786fb4 Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 21390
diff changeset
1 /* Copyright (c) 2007-2018 Dovecot authors, see the included COPYING file */
5248
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "lib.h"
13529
cf77e448295c Renamed lib/*-internal.h files to lib/*-private.h for consistency.
Timo Sirainen <tss@iki.fi>
parents: 12782
diff changeset
4 #include "ioloop-private.h"
5248
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "ioloop-notify-fd.h"
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6
18980
39255150d521 Removed support for dnotify.
Timo Sirainen <tss@iki.fi>
parents: 18137
diff changeset
7 #if defined(IOLOOP_NOTIFY_INOTIFY)
5248
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 struct io *io_notify_fd_add(struct ioloop_notify_fd_context *ctx, int fd,
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 io_callback_t *callback, void *context)
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 {
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12 struct io_notify *io;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 io = i_new(struct io_notify, 1);
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 io->io.condition = IO_NOTIFY;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 io->io.callback = callback;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 io->io.context = context;
8366
2c111b572eee Don't break if io_remove() or timeout_remove() are called for non-active ioloops.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
18 io->io.ioloop = current_ioloop;
5248
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
19 io->fd = fd;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
20
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
21 if (ctx->notifies != NULL) {
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
22 ctx->notifies->prev = io;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
23 io->next = ctx->notifies;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
24 }
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25 ctx->notifies = io;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
26 return &io->io;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 }
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
29 void io_notify_fd_free(struct ioloop_notify_fd_context *ctx,
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 struct io_notify *io)
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
31 {
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32 if (io->prev != NULL)
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 io->prev->next = io->next;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
34 else
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 ctx->notifies = io->next;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 if (io->next != NULL)
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 io->next->prev = io->prev;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
39 i_free(io);
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40 }
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
41
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 struct io_notify *
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43 io_notify_fd_find(struct ioloop_notify_fd_context *ctx, int fd)
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
44 {
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
45 struct io_notify *io;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
46
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
47 for (io = ctx->notifies; io != NULL; io = io->next) {
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48 if (io->fd == fd)
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
49 return io;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
50 }
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
51
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
52 return NULL;
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
53 }
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54
12ac5f685814 Various cleanups to ioloop code.
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 #endif