From 5628ee9e51ca2680fc1bc12def0c731122646eed Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Thu, 31 Mar 2011 14:22:20 +0200 Subject: [PATCH] API change - probably breaks unix --- ol.h | 11 ++++++----- test/echo.c | 31 ++++++++++++++----------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/ol.h b/ol.h index bd72d00a..d9348341 100644 --- a/ol.h +++ b/ol.h @@ -10,13 +10,12 @@ typedef int ol_err; /* FIXME */ typedef struct ol_req_s ol_req; typedef struct ol_handle_s ol_handle; -typedef void (*ol_req_cb)(ol_req* req, ol_err e); -typedef void (*ol_read_cb)(ol_req* req, size_t nread, ol_err e); -typedef void (*ol_write_cb)(ol_req* req, ol_err e); +typedef void (*ol_read_cb)(ol_req* req, size_t nread); +typedef void (*ol_write_cb)(ol_req* req); typedef void (*ol_accept_cb)(ol_handle* server, ol_handle* new_client); typedef void (*ol_close_cb)(ol_handle* handle, ol_err e); -typedef ol_req_cb ol_connect_cb; -typedef ol_req_cb ol_shutdown_cb; +typedef void (*ol_connect_cb)(ol_req* req, ol_err e); +typedef void (*ol_shutdown_cb)(ol_req* req); #if defined(__unix__) || defined(__POSIX__) @@ -81,6 +80,8 @@ const char* ol_err_str(ol_err err); void ol_init(); int ol_run(); +void ol_req_init(ol_req *req, void *cb); + ol_handle* ol_tcp_handle_new(ol_close_cb close_cb, void* data); /* TODO: * ol_named_pipe_handle_new diff --git a/test/echo.c b/test/echo.c index bd18c874..d204d0af 100644 --- a/test/echo.c +++ b/test/echo.c @@ -15,31 +15,27 @@ typedef struct { } peer_t; -void after_write(ol_req* req, ol_err err); -void after_read(ol_req* req, size_t nread, ol_err err); +void after_write(ol_req* req); +void after_read(ol_req* req, size_t nread); void try_read(peer_t* peer); void on_close(ol_handle* peer, ol_err err); void on_accept(ol_handle* server, ol_handle* new_client); -void after_write(ol_req* req, ol_err err) { - if (!err) { - peer_t *peer = (peer_t*) req->data; - try_read(peer); - } +void after_write(ol_req* req) { + peer_t *peer = (peer_t*) req->data; + try_read(peer); } -void after_read(ol_req* req, size_t nread, ol_err err) { - if (!err) { - if (nread == 0) { - ol_close(req->handle); - } else { - peer_t *peer = (peer_t*) req->data; - peer->buf.len = nread; - peer->req.cb = after_write; - ol_write(peer->handle, &peer->req, &peer->buf, 1); - } +void after_read(ol_req* req, size_t nread) { + if (nread == 0) { + ol_close(req->handle); + } else { + peer_t *peer = (peer_t*) req->data; + peer->buf.len = nread; + peer->req.cb = after_write; + ol_write(peer->handle, &peer->req, &peer->buf, 1); } } @@ -71,6 +67,7 @@ void on_accept(ol_handle* server, ol_handle* new_client) { p->buf.base = p->read_buffer; p->buf.len = BUFSIZE; p->req.data = p; + ol_req_init(&p->req, NULL); try_read(p);