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 /* always or closing list. */
32 void (*finish)(struct io_conn *, void *arg);
35 struct io_plan plan[2];
38 extern void *io_loop_return;
40 bool add_listener(struct io_listener *l);
41 bool add_conn(struct io_conn *c);
42 bool add_duplex(struct io_conn *c);
43 void del_listener(struct io_listener *l);
44 void backend_new_closing(struct io_conn *conn);
45 void backend_new_always(struct io_conn *conn);
46 void backend_new_plan(struct io_conn *conn);
48 void backend_plan_done(struct io_conn *conn);
50 void backend_wake(const void *wait);
51 void backend_del_conn(struct io_conn *conn);
53 void io_ready(struct io_conn *conn, int pollflags);
54 void io_do_always(struct io_conn *conn);
55 void io_do_wakeup(struct io_conn *conn, struct io_plan *plan);
56 void *do_io_loop(struct io_conn **ready);
57 #endif /* CCAN_IO_BACKEND_H */