-
-struct io_conn;
-
-/**
- * struct io_plan - returned from a setup function.
- *
- * A plan of what IO to do, when.
- */
-struct io_plan {
- int pollflag;
- /* Only NULL if idle. */
- int (*io)(int fd, struct io_plan *plan);
- /* Only NULL if closing. */
- struct io_plan (*next)(struct io_conn *, void *arg);
- void *next_arg;
-
- union {
- struct {
- char *buf;
- size_t len;
- } read;
- struct {
- const char *buf;
- size_t len;
- } write;
- struct {
- char *buf;
- size_t *lenp;
- } readpart;
- struct {
- const char *buf;
- size_t *lenp;
- } writepart;
- struct {
- int saved_errno;
- } close;
- struct {
- void *p;
- size_t len;
- } ptr_len;
- struct {
- void *p1;
- void *p2;
- } ptr_ptr;
- struct {
- size_t len1;
- size_t len2;
- } len_len;
- } u;
-};
-
-#ifdef DEBUG
-extern bool io_plan_for_other;
-extern bool (*io_debug)(struct io_conn *conn);
-#define io_plan_other() ((io_plan_for_other = true))
-void io_plan_debug(struct io_plan *plan);
-#else
-#define io_plan_other() (void)0
-static inline void io_plan_debug(struct io_plan *plan) { }
-#endif