X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=peer.h;h=5dc06fe5b2e11115ffb555492038ac0908d0671f;hb=67cab819782fe6d24fff94c42110b091ba027573;hp=4053bee277fea7801a2de84d240c7eae7b03215b;hpb=7639851f75c977923e636044af1c44508424b75e;p=dragonnet.git diff --git a/peer.h b/peer.h index 4053bee..5dc06fe 100644 --- a/peer.h +++ b/peer.h @@ -2,8 +2,8 @@ #define _DRAGONNET_PEER_H_ #include - -#include "addr.h" +#include +#include typedef enum { DRAGONNET_PEER_CREATED, @@ -11,15 +11,21 @@ typedef enum { DRAGONNET_PEER_CLOSED } DragonnetPeerState; -typedef struct { +typedef struct dragonnet_peer { int sock; DragonnetAddr laddr, raddr; DragonnetPeerState state; + pthread_t recv_thread; + + void (**on_recv_type)(struct dragonnet_peer *, void *); - pthread_rwlock_t *mu; + pthread_rwlock_t mu; } DragonnetPeer; DragonnetPeer *dragonnet_connect(char *addr); +void dragonnet_peer_set_recv_hook(DragonnetPeer *p, u16 type_id, + void (*on_recv)(struct dragonnet_peer *, void *)); +void dragonnet_peer_run(DragonnetPeer *p); void dragonnet_peer_close(DragonnetPeer *p); void dragonnet_peer_delete(DragonnetPeer *p);