oio_tcp_handle_accept() does not require initialization of client

closes #13.
This commit is contained in:
Ryan Dahl 2011-04-18 03:18:26 -07:00
parent fa439e7bbc
commit c3eda7a4da
3 changed files with 11 additions and 6 deletions

View File

@ -236,11 +236,16 @@ void oio__server_io(EV_P_ ev_io* watcher, int revents) {
}
int oio_tcp_handle_accept(oio_handle* server, oio_handle* client) {
int oio_tcp_handle_accept(oio_handle* server, oio_handle* client,
oio_close_cb close_cb, void* data) {
if (server->accepted_fd < 0) {
return -1;
}
if (oio_tcp_handle_init(client, close_cb, data)) {
return -1;
}
if (oio_tcp_open(client, server->accepted_fd)) {
/* Ignore error for now */
server->accepted_fd = -1;

5
oio.h
View File

@ -107,7 +107,10 @@ int oio_shutdown(oio_req* req);
/* TCP server methods. */
int oio_listen(oio_handle* handle, int backlog, oio_accept_cb cb);
int oio_tcp_handle_accept(oio_handle* server, oio_handle* client);
/* Call this after accept_cb. client does not need to be initialized. */
int oio_tcp_handle_accept(oio_handle* server, oio_handle* client,
oio_close_cb close_cb, void* data);
/* Generic handle methods */
int oio_read(oio_req* req, oio_buf* bufs, int bufcnt);

View File

@ -64,10 +64,7 @@ void on_close(oio_handle* peer, oio_err err) {
void on_accept(oio_handle* server) {
peer_t* p = (peer_t*)calloc(sizeof(peer_t), 1);
int r = oio_tcp_handle_init(&p->handle, on_close, (void*)p);
ASSERT(!r);
if (oio_tcp_handle_accept(server, &p->handle)) {
if (oio_tcp_handle_accept(server, &p->handle, on_close, (void*)p)) {
FATAL("oio_tcp_handle_accept failed");
}