1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <stdint.h>
#include "../event.h"
#define EOS_SOCK_MTYPE_PKT 0
#define EOS_SOCK_MTYPE_OPEN_DGRAM 1
#define EOS_SOCK_MTYPE_CLOSE 127
#define EOS_SOCK_MAX_SOCK 2
#define EOS_SOCK_SIZE_UDP_HDR 8
#define EOS_IPv4_ADDR_SIZE 4
#define EOS_SOCK_ERR_CLOSED -1021
typedef struct EOSNetAddr {
unsigned char host[EOS_IPv4_ADDR_SIZE];
uint16_t port;
} EOSNetAddr;
void eos_sock_init(void);
void eos_sock_set_handler(unsigned char sock, eos_evt_handler_t handler);
eos_evt_handler_t eos_sock_get_handler(unsigned char sock);
int eos_sock_open_udp(eos_evt_handler_t handler, EOSMessage *msg);
void eos_sock_close(unsigned char sock, EOSMessage *msg);
int eos_sock_sendto(unsigned char sock, EOSNetAddr *addr, EOSMessage *msg, uint16_t pkt_len);
int eos_sock_sendto_async(unsigned char sock, EOSNetAddr *addr, EOSMessage *msg, uint16_t pkt_len, int more);
int eos_sock_recvfrom(EOSMessage *msg, uint16_t len, EOSNetAddr *addr, unsigned char *pkt, size_t pkt_size);
unsigned char *eos_sock_msg2pkt(EOSMessage *msg, uint16_t *len, uint16_t *pkt_size);
void eos_sock_pkt2msg(EOSMessage *msg, unsigned char *pkt, uint16_t pkt_size);
|