]> git.lizzy.rs Git - dragonnet.git/blob - listen.h
e1d96a359afa0472f9d0ab4a0f750659330ec342
[dragonnet.git] / listen.h
1 #ifndef _DRAGONNET_LISTEN_H_
2 #define _DRAGONNET_LISTEN_H_
3
4 #include <stdbool.h>
5
6 #include "peer.h"
7
8 typedef enum {
9         DRAGONNET_LISTENER_CREATED,
10         DRAGONNET_LISTENER_ACTIVE,
11         DRAGONNET_LISTENER_CLOSED
12 } DragonnetListenerState;
13
14 typedef struct {
15         int sock;
16         DragonnetAddr laddr;
17         void (*on_connect)(DragonnetPeer *p);
18         DragonnetListenerState state;
19
20         pthread_rwlock_t mu;
21 } DragonnetListener;
22
23 DragonnetListener *dragonnet_listener_new(char *addr,
24                 void (*on_connect)(DragonnetPeer *p));
25 void dragonnet_listener_run(DragonnetListener *l);
26 void dragonnet_listener_close(DragonnetListener *l);
27 void dragonnet_listener_delete(DragonnetListener *l);
28
29 #endif