add a machinereadable version of ctdb stats/statistics
[metze/ctdb/wip.git] / tcp / ctdb_tcp.h
1 /* 
2    ctdb database library
3
4    Copyright (C) Andrew Tridgell  2006
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3 of the License, or
9    (at your option) any later version.
10    
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15    
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, see <http://www.gnu.org/licenses/>.
18 */
19
20
21 /* ctdb_tcp main state */
22 struct ctdb_tcp {
23         struct ctdb_context *ctdb;
24         int listen_fd;
25 };
26
27 /*
28   state associated with an incoming connection
29 */
30 struct ctdb_incoming {
31         struct ctdb_context *ctdb;
32         int fd;
33         struct ctdb_queue *queue;
34 };
35
36 /*
37   state associated with one tcp node
38 */
39 struct ctdb_tcp_node {
40         int fd;
41         struct ctdb_queue *out_queue;
42         struct fd_event *connect_fde;
43         struct timed_event *connect_te;
44 };
45
46
47 /* prototypes internal to tcp transport */
48 int ctdb_tcp_queue_pkt(struct ctdb_node *node, uint8_t *data, uint32_t length);
49 int ctdb_tcp_listen(struct ctdb_context *ctdb);
50 void ctdb_tcp_node_connect(struct event_context *ev, struct timed_event *te, 
51                            struct timeval t, void *private_data);
52 void ctdb_tcp_read_cb(uint8_t *data, size_t cnt, void *args);
53 void ctdb_tcp_tnode_cb(uint8_t *data, size_t cnt, void *private_data);
54 void ctdb_tcp_stop_connection(struct ctdb_node *node);
55
56 #define CTDB_TCP_ALIGNMENT 8