2 * Copyright (c) 2007 Ry Dahl <ry.d4hl@gmail.com>
6 #ifndef __EV_TCP_SOCKET_H_
7 #define __EV_TCP_SOCKET_H_
9 #include <sys/socket.h>
10 #include <netinet/in.h>
14 #define EV_TCP_WARNING 0 /* just a warning, tell the user */
15 #define EV_TCP_ERROR 1 /* an error, the operation cannot complete */
16 #define EV_TCP_FATAL 2 /* an error, the operation must be aborted */
17 typedef void (*ev_tcp_error_cb
) (int severity
, char *message
);
19 typedef struct ev_tcp_client ev_tcp_client
;
20 typedef struct ev_tcp_server ev_tcp_server
;
22 #define EV_TCP_COMMON \
24 struct sockaddr_in sockaddr; \
26 ev_tcp_error_cb error_cb;
30 typedef void (*ev_tcp_server_accept_cb
) (ev_tcp_server
*, ev_tcp_client
*);
32 ev_tcp_server
* ev_tcp_server_new(ev_tcp_error_cb error_cb
);
33 void ev_tcp_server_free(ev_tcp_server
*);
34 void ev_tcp_server_close(ev_tcp_server
*);
35 void ev_tcp_server_listen( ev_tcp_server
*
39 , ev_tcp_server_accept_cb
42 struct ev_tcp_server
{
47 ev_tcp_server_accept_cb accept_cb
;
48 ev_io
*accept_watcher
;
54 typedef void (*ev_tcp_client_read_cb
)( ev_tcp_client
*
59 void ev_tcp_client_free(ev_tcp_client
*);
60 void ev_tcp_client_close(ev_tcp_client
*);
61 int ev_tcp_client_write(ev_tcp_client
*, const char *data
, int length
);
63 struct ev_tcp_client
{
66 ev_tcp_server
*parent
;
68 ev_tcp_client_read_cb read_cb
;
72 #endif __EV_TCP_SOCKET_H_