]> git.lizzy.rs Git - dragonnet.git/blob - peer.h
Allow 0-byte recv
[dragonnet.git] / peer.h
1 #ifndef _DRAGONNET_PEER_H_
2 #define _DRAGONNET_PEER_H_
3
4 #include <dragonnet/addr.h>
5 #include <pthread.h>
6 #include <stdbool.h>
7 #include <stdint.h>
8
9 typedef uint16_t DragonnetTypeId;
10
11 typedef struct dragonnet_peer {
12         int sock;
13         DragonnetAddr laddr, raddr;
14         pthread_t recv_thread;
15         pthread_mutex_t mtx;
16
17         void (*on_disconnect)(struct dragonnet_peer *);
18         bool (*on_recv)(struct dragonnet_peer *, DragonnetTypeId, void *);
19         void (**on_recv_type)(struct dragonnet_peer *, void *);
20
21         void *extra;
22 } DragonnetPeer;
23
24 DragonnetPeer *dragonnet_connect(char *addr);
25 void dragonnet_peer_run(DragonnetPeer *p);
26 void dragonnet_peer_shutdown(DragonnetPeer *p);
27
28 #endif