File: tcp_listener.h

package info (click to toggle)
rtpengine 13.5.1.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 13,676 kB
  • sloc: ansic: 86,764; perl: 59,422; python: 3,193; sh: 1,030; makefile: 693; asm: 211
file content (47 lines) | stat: -rw-r--r-- 1,155 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef _TCP_LISTENER_H_
#define _TCP_LISTENER_H_

#include "socket.h"
#include "obj.h"
#include "helpers.h"
#include "containers.h"

struct obj;
struct streambuf_callback;
struct streambuf_stream;

TYPED_GHASHTABLE_PROTO(tcp_streams_ht, struct streambuf_stream, struct streambuf_stream)


typedef void (*tcp_listener_callback_t)(struct obj *p, socket_t *sock, char *addr, socket_t *);
typedef void (*streambuf_callback_t)(struct streambuf_stream *);

struct streambuf_listener {
	socket_t listener;
	mutex_t lock;
	tcp_streams_ht streams;
};
struct streambuf_stream {
	struct obj obj;
	socket_t sock;
	struct streambuf_listener *listener;
	struct streambuf_callback *cb;
	struct obj *parent;
	char *addr;
	struct streambuf *inbuf,
			 *outbuf;

};

int streambuf_listener_init(struct streambuf_listener *listener, const endpoint_t *ep,
		streambuf_callback_t newconn_func,
		streambuf_callback_t newdata_func,
		streambuf_callback_t closed_func,
		struct obj *obj);
void streambuf_listener_shutdown(struct streambuf_listener *);

void streambuf_stream_close(struct streambuf_stream *);
void streambuf_stream_shutdown(struct streambuf_stream *);


#endif