initial commit
This commit is contained in:
52
third_party/libhv/event/rudp.h
vendored
Executable file
52
third_party/libhv/event/rudp.h
vendored
Executable file
@@ -0,0 +1,52 @@
|
||||
#ifndef HV_RUDP_H_
|
||||
#define HV_RUDP_H_
|
||||
|
||||
#include "hloop.h"
|
||||
|
||||
#if WITH_RUDP
|
||||
|
||||
#include "rbtree.h"
|
||||
#include "hsocket.h"
|
||||
#include "hmutex.h"
|
||||
#if WITH_KCP
|
||||
#include "kcp/hkcp.h"
|
||||
#endif
|
||||
|
||||
typedef struct rudp_s {
|
||||
struct rb_root rb_root;
|
||||
hmutex_t mutex;
|
||||
} rudp_t;
|
||||
|
||||
typedef struct rudp_entry_s {
|
||||
struct rb_node rb_node;
|
||||
sockaddr_u addr; // key
|
||||
// val
|
||||
hio_t* io;
|
||||
#if WITH_KCP
|
||||
kcp_t kcp;
|
||||
#endif
|
||||
} rudp_entry_t;
|
||||
|
||||
// NOTE: rudp_entry_t alloc when rudp_get
|
||||
void rudp_entry_free(rudp_entry_t* entry);
|
||||
|
||||
void rudp_init(rudp_t* rudp);
|
||||
void rudp_cleanup(rudp_t* rudp);
|
||||
|
||||
bool rudp_insert(rudp_t* rudp, rudp_entry_t* entry);
|
||||
// NOTE: just rb_erase, not free
|
||||
rudp_entry_t* rudp_remove(rudp_t* rudp, struct sockaddr* addr);
|
||||
rudp_entry_t* rudp_search(rudp_t* rudp, struct sockaddr* addr);
|
||||
#define rudp_has(rudp, addr) (rudp_search(rudp, addr) != NULL)
|
||||
|
||||
// rudp_search + malloc + rudp_insert
|
||||
rudp_entry_t* rudp_get(rudp_t* rudp, struct sockaddr* addr);
|
||||
// rudp_remove + free
|
||||
void rudp_del(rudp_t* rudp, struct sockaddr* addr);
|
||||
|
||||
// rudp_get(&io->rudp, io->peeraddr)
|
||||
rudp_entry_t* hio_get_rudp(hio_t* io);
|
||||
|
||||
#endif // WITH_RUDP
|
||||
|
||||
#endif // HV_RUDP_H_
|
||||
Reference in New Issue
Block a user