]> git.ozlabs.org Git - ccan/blobdiff - ccan/io/io.c
ccan/io: put explicit poll flags in the plan.
[ccan] / ccan / io / io.c
index ec4d4fabbc19df27e67059c652787df4e37f99eb..2ce5d6ae3224b1ac8cd5c51b5e354871a46f8e2c 100644 (file)
@@ -8,6 +8,7 @@
 #include <errno.h>
 #include <stdlib.h>
 #include <assert.h>
+#include <poll.h>
 
 void *io_loop_return;
 
@@ -56,6 +57,7 @@ struct io_conn *io_new_conn_(int fd,
        conn->fd.next = start;
        conn->fd.finish = finish;
        conn->fd.finish_arg = conn->fd.next_arg = arg;
+       conn->pollflag = 0;
        conn->state = NEXT;
        conn->duplex = NULL;
        conn->timeout = NULL;
@@ -84,6 +86,7 @@ struct io_conn *io_duplex_(struct io_conn *old,
        conn->fd.next = start;
        conn->fd.finish = finish;
        conn->fd.finish_arg = conn->fd.next_arg = arg;
+       conn->pollflag = 0;
        conn->state = NEXT;
        conn->duplex = old;
        conn->timeout = NULL;
@@ -125,6 +128,7 @@ struct io_plan *io_write_(struct io_conn *conn, const void *data, size_t len,
        conn->u.write.len = len;
        conn->fd.next = cb;
        conn->fd.next_arg = arg;
+       conn->pollflag = POLLOUT;
        return to_ioplan(WRITE);
 }
 
@@ -137,6 +141,7 @@ struct io_plan *io_read_(struct io_conn *conn, void *data, size_t len,
        conn->u.read.len = len;
        conn->fd.next = cb;
        conn->fd.next_arg = arg;
+       conn->pollflag = POLLIN;
        return to_ioplan(READ);
 }
 
@@ -149,6 +154,7 @@ struct io_plan *io_read_partial_(struct io_conn *conn, void *data, size_t *len,
        conn->u.readpart.lenp = len;
        conn->fd.next = cb;
        conn->fd.next_arg = arg;
+       conn->pollflag = POLLIN;
        return to_ioplan(READPART);
 }
 
@@ -162,11 +168,13 @@ struct io_plan *io_write_partial_(struct io_conn *conn,
        conn->u.writepart.lenp = len;
        conn->fd.next = cb;
        conn->fd.next_arg = arg;
+       conn->pollflag = POLLOUT;
        return to_ioplan(WRITEPART);
 }
 
 struct io_plan *io_idle(struct io_conn *conn)
 {
+       conn->pollflag = 0;
        return to_ioplan(IDLE);
 }