]> git.ozlabs.org Git - ccan/blobdiff - ccan/io/backend.h
io: allow overriding poll function.
[ccan] / ccan / io / backend.h
index 2c03a98a1a4632917ad810f6e1d74d37813d52df..c8ceb4e864397c5e54c54fe20c3ceddaae2c9e20 100644 (file)
@@ -2,8 +2,8 @@
 #ifndef CCAN_IO_BACKEND_H
 #define CCAN_IO_BACKEND_H
 #include <stdbool.h>
-#include <poll.h>
 #include "io_plan.h"
+#include <ccan/list/list.h>
 
 struct fd {
        int fd;
@@ -30,9 +30,7 @@ enum io_plan_status {
        /* Waiting for io_wake */
        IO_WAITING,
        /* Always do this. */
-       IO_ALWAYS,
-       /* Closing (both plans will be the same). */
-       IO_CLOSING
+       IO_ALWAYS
 };
 
 /**
@@ -58,12 +56,9 @@ struct io_plan {
 /* One connection per client. */
 struct io_conn {
        struct fd fd;
-       bool debug;
-       /* For duplex to save. */
-       bool debug_saved;
 
-       /* always or closing list. */
-       struct io_conn *list;
+       /* always list. */
+       struct list_node always;
 
        void (*finish)(struct io_conn *, void *arg);
        void *finish_arg;
@@ -77,17 +72,16 @@ bool add_listener(struct io_listener *l);
 bool add_conn(struct io_conn *c);
 bool add_duplex(struct io_conn *c);
 void del_listener(struct io_listener *l);
-void backend_new_closing(struct io_conn *conn);
+void cleanup_conn_without_close(struct io_conn *c);
 void backend_new_always(struct io_conn *conn);
 void backend_new_plan(struct io_conn *conn);
 void remove_from_always(struct io_conn *conn);
 void backend_plan_done(struct io_conn *conn);
 
 void backend_wake(const void *wait);
-void backend_del_conn(struct io_conn *conn);
 
 void io_ready(struct io_conn *conn, int pollflags);
 void io_do_always(struct io_conn *conn);
-void io_do_wakeup(struct io_conn *conn, struct io_plan *plan);
+void io_do_wakeup(struct io_conn *conn, enum io_direction dir);
 void *do_io_loop(struct io_conn **ready);
 #endif /* CCAN_IO_BACKEND_H */