2 * Copyright (c) 2007 Ry Dahl <ry.d4hl@gmail.com>
3 * This software is released under the "MIT License". See README file for details.
9 #include <sys/socket.h>
10 #include <netinet/in.h>
14 typedef struct tcp_client tcp_client
;
15 typedef struct tcp_server tcp_server
;
18 #define TCP_LOG_DOMAIN "TCP"
19 #define tcp_error(str, ...) \
20 g_log(TCP_LOG_DOMAIN, G_LOG_LEVEL_ERROR, str, ## __VA_ARGS__);
21 #define tcp_warning(str, ...) \
22 g_log(TCP_LOG_DOMAIN, G_LOG_LEVEL_WARNING, str, ## __VA_ARGS__);
23 #define tcp_info(str, ...) \
24 g_log(TCP_LOG_DOMAIN, G_LOG_LEVEL_INFO, str, ## __VA_ARGS__);
28 struct sockaddr_in sockaddr; \
32 /* User is responsible for closing and freeing the tcp_client */
33 typedef void (*tcp_server_accept_cb_t
) (tcp_client
*, void *callback_data
);
35 tcp_server
* tcp_server_new();
36 void tcp_server_free(tcp_server
*);
37 void tcp_server_close(tcp_server
*);
38 void tcp_server_listen( tcp_server
*
42 , tcp_server_accept_cb_t
43 , void *accept_cb_data
45 char* tcp_server_address(tcp_server
*);
49 struct hostent
*dns_info
;
55 tcp_server_accept_cb_t accept_cb
;
57 ev_io
*accept_watcher
;
62 typedef void (*tcp_client_read_cb_t
)(char *buffer
, int length
, void *data
);
64 void tcp_client_free(tcp_client
*client
);
65 void tcp_client_close(tcp_client
*);
66 int tcp_client_write(tcp_client
*, const char *data
, int length
);
74 tcp_client_read_cb_t read_cb
;
77 ev_timer
*timeout_watcher
;