]> git.lizzy.rs Git - dragonnet.git/blob - peer.h
Add buffer based (de)serialization
[dragonnet.git] / peer.h
1 #ifndef _DRAGONNET_PEER_H_
2 #define _DRAGONNET_PEER_H_
3
4 #include <pthread.h>
5 #include <dragontype/number.h>
6
7 #include "addr.h"
8
9 typedef enum {
10         DRAGONNET_PEER_CREATED,
11         DRAGONNET_PEER_ACTIVE,
12         DRAGONNET_PEER_CLOSED
13 } DragonnetPeerState;
14
15 typedef struct dragonnet_peer {
16         int sock;
17         DragonnetAddr laddr, raddr;
18         DragonnetPeerState state;
19         pthread_t recv_thread;
20
21         void (*on_recv_type)(struct dragonnet_peer *, u16);
22
23         pthread_rwlock_t mu;
24 } DragonnetPeer;
25
26 DragonnetPeer *dragonnet_connect(char *addr, void (*on_recv_type)(struct dragonnet_peer *, u16));
27 void dragonnet_peer_run(DragonnetPeer *p);
28 void dragonnet_peer_close(DragonnetPeer *p);
29 void dragonnet_peer_delete(DragonnetPeer *p);
30
31 #endif