API change - probably breaks unix
This commit is contained in:
parent
42d96dc3ca
commit
5628ee9e51
11
ol.h
11
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
|
||||
|
||||
31
test/echo.c
31
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);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user