]> git.lizzy.rs Git - dragonnet.git/blob - listen.h
Rework multithreading responsibilities and disconnect process
[dragonnet.git] / listen.h
1 #ifndef _DRAGONNET_LISTEN_H_
2 #define _DRAGONNET_LISTEN_H_
3
4 #include <dragonnet/peer.h>
5 #include <stdbool.h>
6
7 typedef struct {
8         int sock;
9         DragonnetAddr laddr;
10         pthread_t accept_thread;
11         bool active;
12
13         void (*on_connect)(DragonnetPeer *);
14         void (*on_disconnect)(DragonnetPeer *);
15         bool (*on_recv)(DragonnetPeer *, DragonnetTypeId, void *);
16         void (**on_recv_type)(DragonnetPeer *, void *);
17
18         pthread_rwlock_t mu;
19 } DragonnetListener;
20
21 DragonnetListener *dragonnet_listener_new(char *addr);
22 void dragonnet_listener_run(DragonnetListener *l);
23 void dragonnet_listener_close(DragonnetListener *l);
24 void dragonnet_listener_delete(DragonnetListener *l);
25
26 #endif