1 /* Licensed under LGPLv2.1+ - see LICENSE file for details */
2 #ifndef CCAN_IO_BACKEND_H
3 #define CCAN_IO_BACKEND_H
14 /* Listeners create connections. */
20 /* These are for connections we create. */
21 struct io_plan *(*init)(struct io_conn *conn, void *arg);
25 /* One connection per client. */
29 /* For duplex to save. */
32 /* always or closing list. */
35 void (*finish)(struct io_conn *, void *arg);
38 struct io_plan plan[2];
41 extern void *io_loop_return;
43 bool add_listener(struct io_listener *l);
44 bool add_conn(struct io_conn *c);
45 bool add_duplex(struct io_conn *c);
46 void del_listener(struct io_listener *l);
47 void backend_new_closing(struct io_conn *conn);
48 void backend_new_always(struct io_conn *conn);
49 void backend_new_plan(struct io_conn *conn);
50 void remove_from_always(struct io_conn *conn);
51 void backend_plan_done(struct io_conn *conn);
53 void backend_wake(const void *wait);
54 void backend_del_conn(struct io_conn *conn);
56 void io_ready(struct io_conn *conn, int pollflags);
57 void io_do_always(struct io_conn *conn);
58 void io_do_wakeup(struct io_conn *conn, struct io_plan *plan);
59 void *do_io_loop(struct io_conn **ready);
60 #endif /* CCAN_IO_BACKEND_H */