1 #include <dragonnet/recv.h>
3 static void rcv(DragonnetPeer *p, const void *buf, size_t n)
5 pthread_rwlock_rdlock(&p->mu);
7 pthread_rwlock_unlock(&p->mu);
9 ssize_t len = recv(sock, buf, n, MSG_WAITALL);
12 dragonnet_peer_delete(p);
18 pthread_rwlock_wrlock(&p->mu);
24 pthread_rwlock_unlock(&p->mu);
28 u8 recv_u8(DragonnetPeer *p)
35 s8 recv_s8(DragonnetPeer *p)
37 return (s8) recv_u8(p);
40 u16 recv_u16(DragonnetPeer *p)
43 rcv(p, &be, sizeof be);
47 s16 recv_s16(DragonnetPeer *p)
49 return (s16) recv_u16(p);
52 u32 recv_u32(DragonnetPeer *p)
55 rcv(p, &be, sizeof be);
59 s32 recv_s32(DragonnetPeer *p)
61 return (s32) recv_u32(p);
64 u64 recv_u64(DragonnetPeer *p)
67 rcv(p, &be, sizeof be);
71 s64 recv_s64(DragonnetPeer *p)
73 return (s64) recv_u64(p);
76 f32 recv_f32(DragonnetPeer *p)
78 return (f32) recv_u32(p);
81 f64 recv_f64(DragonnetPeer *p)
83 return (f64) recv_u64(p);