compiles
[ebb.git] / ev_tcp_socket.h
blob486f24f1c3e87155e33066522311d7214f7b703d
1 /*
2 * Copyright (c) 2007 Ryan Dahl <ry.d4hl@gmail.com>
3 * All rights reserved.
4 */
6 #ifndef _TCP_SOCKET_H_
7 #define _TCP_SOCKET_H_
9 #include <sys/socket.h>
10 #include <netinet/in.h>
11 #include <glib.h>
12 #include <ev.h>
14 #define TCP_SOCKET_WARNING 0 /* just a warning, tell the user */
15 #define TCP_SOCKET_ERROR 1 /* an error, the operation cannot complete */
16 #define TCP_SOCKET_FATAL 2 /* an error, the operation must be aborted */
17 typedef void (*tcp_socket_error_cb) (int severity, char *message);
19 typedef void (*tcp_socket_read_cb)(tcp_socket*, char *buffer, size_t length);
21 typedef struct tcp_socket {
22 int fd;
23 int buf_size;
24 tcp_socket_error_cb error_cb;
25 struct sockaddr_in sockaddr;
27 /* private */
28 tcp_socket_read_cb read_cb;
29 ev_io *watcher;
30 char *write_buffer;
31 size_t write_buffer_length;
32 } tcp_socket;
34 tcp_socket* tcp_socket_new(tcp_socket_error_cb error_cb);
35 void tcp_socket_free(tcp_socket *socket);
36 void tcp_socket_close(tcp_socket *socket);
37 char* tcp_socket_address(tcp_socket *socket);
38 void tcp_socket_listen(tcp_socket *socket, char *address, int port, int backlog, connect_cb);
39 size_t tcp_socket_write(tcp_socket *, char *data, size_t length);
41 // client side socket - not implemented
42 // void tcp_socket_connect(tcp_socket *, char *address, int port);
44 #endif _TCP_SOCKET_H_