2 * Copyright (c) 2007 Ryan Dahl <ry.d4hl@gmail.com>
9 #include "tcp_server.h"
13 typedef struct evtcp_socket evtcp_socket
;
16 typedef void (*evtcp_connection_cb
) (evtcp_server
*parent
, evtcp_client
*new_client
);
17 typedef struct evtcp_server
{
22 /* called for each client that connects */
23 evtcp_connection_cb connection_cb
;
26 struct ev_io
*watcher
;
27 evtcp_error_cb error_cb
;
31 evtcp_server
* evtcp_server_new(tcp_error_cb
);
32 void evtcp_server_free(evtcp_server
*);
33 void evtcp_server_bind(evtcp_server
*, char *address
, int port
, evtcp_connection_cb
);
35 /*** TCP Server Client ***/
36 typedef void (*evtcp_read_cb
)(evtcp_client
*, char *buffer
, size_t length
);
37 typedef struct evtcp_client
{
38 evtcp_server
*parent
; /* ro */
39 /* called each time there is data to read */
40 evtcp_read_cb read_cb
; /* rw */
45 struct ev_io
*io_event
;
46 evtcp_error_cb error_cb
;
48 size_t write_buffer_length
;
50 /* returns the total number of bytes buffered after this write */
51 size_t evtcp_client_write(evtcp_client_t
*, char *data
, size_t length
);
52 void evtcp_client_close(evtcp_client
*);