X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fio%2Fbenchmarks%2Frun-length-prefix.c;h=60de3bad02e1bb9d54824df7a294f9c1e53ce359;hp=7d0336348e0028a922afe777b427f4ffa42628ed;hb=3ffb94e9aad84dc0d8e19a5a7d709589d7956ddf;hpb=8d97cddd18f504409ddb66dfe396798c99c2dfbd diff --git a/ccan/io/benchmarks/run-length-prefix.c b/ccan/io/benchmarks/run-length-prefix.c index 7d033634..60de3bad 100644 --- a/ccan/io/benchmarks/run-length-prefix.c +++ b/ccan/io/benchmarks/run-length-prefix.c @@ -25,31 +25,30 @@ struct client { char *request_buffer; }; -static struct io_op *write_reply(struct io_conn *conn, struct client *client); -static struct io_op *read_body(struct io_conn *conn, struct client *client) +static struct io_plan write_reply(struct io_conn *conn, struct client *client); +static struct io_plan read_body(struct io_conn *conn, struct client *client) { assert(client->len <= REQUEST_MAX); return io_read(client->request_buffer, client->len, - io_next(conn, write_reply, client)); + write_reply, client); } -static struct io_op *read_header(struct io_conn *conn, struct client *client) +static struct io_plan io_read_header(struct client *client) { - return io_read(&client->len, sizeof(client->len), - io_next(conn, read_body, client)); + return io_read(&client->len, sizeof(client->len), read_body, client); } /* once we're done, loop again. */ -static struct io_op *write_complete(struct io_conn *conn, struct client *client) +static struct io_plan write_complete(struct io_conn *conn, struct client *client) { completed++; - return read_header(conn, client); + return io_read_header(client); } -static struct io_op *write_reply(struct io_conn *conn, struct client *client) +static struct io_plan write_reply(struct io_conn *conn, struct client *client) { return io_write(&client->len, sizeof(client->len), - io_next(conn, write_complete, client)); + write_complete, client); } /* This runs in the child. */ @@ -67,7 +66,7 @@ static void create_clients(struct sockaddr_un *addr, int waitfd) if (connect(sock[i], (void *)addr, sizeof(*addr)) != 0) err(1, "connecting socket"); /* Make nonblocking. */ - fcntl(sock[i], F_SETFD, fcntl(sock[i], F_GETFD)|O_NONBLOCK); + io_fd_block(sock[i], false); done[i] = 0; } @@ -112,14 +111,9 @@ static void sigalarm(int sig) write(timeout[1], "1", 1); } -static struct io_op *do_timeout(struct io_conn *conn, char *buf) +static struct io_plan do_timeout(struct io_conn *conn, char *buf) { - return io_break(conn, NULL); -} - -static struct io_op *do_timeout_read(struct io_conn *conn, char *buf) -{ - return io_read(buf, 1, io_next(conn, do_timeout, buf)); + return io_break(buf, io_idle()); } int main(int argc, char *argv[]) @@ -163,11 +157,11 @@ int main(int argc, char *argv[]) err(1, "Accepting fd"); /* For efficiency, we share buffer */ client->request_buffer = buffer; - io_new_conn(ret, read_header, NULL, client); + io_new_conn(ret, io_read_header(client)); } } - io_new_conn(timeout[0], do_timeout_read, NULL, &buf); + io_new_conn(timeout[0], io_read(&buf, 1, do_timeout, &buf)); close(wake[0]); for (i = 0; i < NUM_CHILDREN; i++)