From: Elias Fleckenstein Date: Sun, 30 Jan 2022 20:43:24 +0000 (+0100) Subject: Don't depend on dragontype types X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=43be5fe7ed4afd892fe2cce414ed274e0f754812;p=dragonnet.git Don't depend on dragontype types --- diff --git a/listen.c b/listen.c index 21d6ee5..b6239dc 100644 --- a/listen.c +++ b/listen.c @@ -82,7 +82,7 @@ DragonnetListener *dragonnet_listener_new(char *addr, return l; } -void dragonnet_listener_set_recv_hook(DragonnetListener *l, u16 type_id, +void dragonnet_listener_set_recv_hook(DragonnetListener *l, DragonnetTypeId type_id, void (*on_recv)(struct dragonnet_peer *, void *)) { pthread_rwlock_rdlock(&l->mu); diff --git a/listen.h b/listen.h index 2ecbc89..2c2b052 100644 --- a/listen.h +++ b/listen.h @@ -24,7 +24,7 @@ typedef struct { DragonnetListener *dragonnet_listener_new(char *addr, void (*on_connect)(DragonnetPeer *p)); -void dragonnet_listener_set_recv_hook(DragonnetListener *l, u16 type_id, +void dragonnet_listener_set_recv_hook(DragonnetListener *l, DragonnetTypeId type_id, void (*on_recv)(struct dragonnet_peer *, void *)); void dragonnet_listener_run(DragonnetListener *l); void dragonnet_listener_close(DragonnetListener *l); diff --git a/peer.c b/peer.c index 83e9122..5cd481a 100644 --- a/peer.c +++ b/peer.c @@ -47,7 +47,7 @@ DragonnetPeer *dragonnet_connect(char *addr) return p; } -void dragonnet_peer_set_recv_hook(DragonnetPeer *p, u16 type_id, +void dragonnet_peer_set_recv_hook(DragonnetPeer *p, DragonnetTypeId type_id, void (*on_recv)(struct dragonnet_peer *, void *)) { pthread_rwlock_rdlock(&p->mu); diff --git a/peer.h b/peer.h index 0160375..e2c957a 100644 --- a/peer.h +++ b/peer.h @@ -2,9 +2,9 @@ #define _DRAGONNET_PEER_H_ #include -#include #include #include +#include typedef enum { DRAGONNET_PEER_CREATED, @@ -12,20 +12,22 @@ typedef enum { DRAGONNET_PEER_CLOSED } DragonnetPeerState; +typedef uint16_t DragonnetTypeId; + typedef struct dragonnet_peer { int sock; DragonnetAddr laddr, raddr; DragonnetPeerState state; pthread_t recv_thread; - bool (*on_recv)(struct dragonnet_peer *, u16, void *); + bool (*on_recv)(struct dragonnet_peer *, DragonnetTypeId, void *); void (**on_recv_type)(struct dragonnet_peer *, void *); pthread_rwlock_t mu; } DragonnetPeer; DragonnetPeer *dragonnet_connect(char *addr); -void dragonnet_peer_set_recv_hook(DragonnetPeer *p, u16 type_id, +void dragonnet_peer_set_recv_hook(DragonnetPeer *p, DragonnetTypeId type_id, void (*on_recv)(struct dragonnet_peer *, void *)); void dragonnet_peer_run(DragonnetPeer *p); void dragonnet_peer_close(DragonnetPeer *p); diff --git a/recv.h b/recv.h index a3b2e2a..a9e0fb9 100644 --- a/recv.h +++ b/recv.h @@ -8,7 +8,7 @@ typedef struct { void (*deserialize)(DragonnetPeer *, void *); } DragonnetType; -extern u16 dragonnet_num_types; +extern DragonnetTypeId dragonnet_num_types; extern DragonnetType dragonnet_types[]; void dragonnet_recv_raw(DragonnetPeer *p, void *buf, size_t n); diff --git a/recv_thread.c b/recv_thread.c index e2ef9e4..b9e344e 100644 --- a/recv_thread.c +++ b/recv_thread.c @@ -2,7 +2,6 @@ #include #include #include -#include #include #include #include @@ -18,7 +17,7 @@ void *dragonnet_peer_recv_thread(void *g_peer) pthread_rwlock_unlock(&p->mu); while (true) { - u16 type_id; + DragonnetTypeId type_id; // Copy socket fd so that shutdown doesn't block pthread_rwlock_rdlock(&p->mu); @@ -46,11 +45,11 @@ void *dragonnet_peer_recv_thread(void *g_peer) type_id = be16toh(type_id); DragonnetType type = dragonnet_types[type_id]; - u8 buf[type.siz]; + unsigned char buf[type.siz]; type.deserialize(p, buf); pthread_rwlock_rdlock(&p->mu); - bool (*on_recv)(struct dragonnet_peer *, u16, void *) = p->on_recv; + bool (*on_recv)(struct dragonnet_peer *, DragonnetTypeId, void *) = p->on_recv; void (*on_recv_type)(DragonnetPeer *, void *) = p->on_recv_type[type_id]; pthread_rwlock_unlock(&p->mu);