]> git.lizzy.rs Git - dragonnet.git/blob - dragonnet/listen.h
Properly interrupt accept thread
[dragonnet.git] / dragonnet / listen.h
1 #ifndef _DRAGONNET_LISTEN_H_
2 #define _DRAGONNET_LISTEN_H_
3
4 #include <stdbool.h>
5 #include "peer.h"
6
7 typedef struct {
8         int sock;
9         char *address;
10
11         pthread_t accept_thread;
12         bool active;
13 #ifndef _WIN32
14         int intr[2];
15 #endif // _WIN32
16
17         void (*on_connect)(DragonnetPeer *);
18         void (*on_disconnect)(DragonnetPeer *);
19         bool (*on_recv)(DragonnetPeer *, DragonnetTypeId, void *);
20         void (**on_recv_type)(DragonnetPeer *, void *);
21 } DragonnetListener;
22
23 DragonnetListener *dragonnet_listener_new(char *addr);
24 void dragonnet_listener_run(DragonnetListener *l);
25 void dragonnet_listener_close(DragonnetListener *l);
26 void dragonnet_listener_delete(DragonnetListener *l);
27
28 #endif