Use UC_TAILQ in udp_heartbeat
This commit is contained in:
+14
-9
@@ -17,6 +17,7 @@
|
||||
#include <ucore/iomux.h>
|
||||
#include <ucore/utils.h>
|
||||
#include <ucore/pack.h>
|
||||
#include <ucore/tailq.h>
|
||||
|
||||
#define HB_MAGIX 0xBEA7BEA7
|
||||
|
||||
@@ -54,12 +55,14 @@ struct HBPeer {
|
||||
struct sockaddr_in peer_addr;
|
||||
time_t last_ok;
|
||||
enum PeerState state;
|
||||
TAILQ_ENTRY(HBPeer) entry;
|
||||
//TAILQ_ENTRY(HBPeer) entry;
|
||||
struct TailQ entry;
|
||||
};
|
||||
|
||||
struct HBContext {
|
||||
struct IOMuxFD sock_fd;
|
||||
TAILQ_HEAD(, HBPeer) peers;
|
||||
//TAILQ_HEAD(, HBPeer) peers;
|
||||
struct TailQ peers; //of HBPeer
|
||||
struct IOMux *mux;
|
||||
};
|
||||
|
||||
@@ -91,14 +94,15 @@ void peer_add_addr(struct HBContext *ctx, const struct sockaddr_in *addr)
|
||||
int usec;
|
||||
|
||||
if (peer != NULL) {
|
||||
UC_LOGF(UC_LL_INFO, LMAIN, "Ignorming adding existing peer %s:%u\n",
|
||||
UC_LOGF(UC_LL_INFO, LMAIN, "Ignoring adding existing peer %s:%u\n",
|
||||
inet_ntoa(addr->sin_addr), addr->sin_port);
|
||||
return;
|
||||
}
|
||||
|
||||
peer = calloc(1, sizeof *peer);
|
||||
peer->peer_addr = *addr;
|
||||
TAILQ_INSERT_TAIL(&ctx->peers, peer, entry);
|
||||
//TAILQ_INSERT_TAIL(&ctx->peers, peer, entry);
|
||||
uc_tailq_insert_tail(&ctx->peers, &peer->entry);
|
||||
|
||||
peer->timer.callback = peer_timer_cb;
|
||||
peer->timer.cookie_ptr = ctx;
|
||||
@@ -143,16 +147,17 @@ void peer_send(struct HBContext *ctx, struct HBPeer *peer)
|
||||
|
||||
struct HBPeer *hb_peer_find(struct HBContext *ctx, const struct sockaddr_in *peer_addr)
|
||||
{
|
||||
struct HBPeer *peer;
|
||||
struct HBPeer *peer = NULL;
|
||||
|
||||
TAILQ_FOREACH(peer, &ctx->peers, entry) {
|
||||
UC_TAILQ_FOREACH_CONTAINER(peer, entry, &ctx->peers) {
|
||||
if (peer_addr->sin_addr.s_addr == peer->peer_addr.sin_addr.s_addr
|
||||
&& peer_addr->sin_port == peer->peer_addr.sin_port) {
|
||||
break;
|
||||
|
||||
return peer;
|
||||
}
|
||||
}
|
||||
|
||||
return peer;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void peer_do_state(struct HBPeer *peer, enum PeerEvent event)
|
||||
@@ -243,7 +248,7 @@ void init_hb_context(struct HBContext *ctx, uint16_t local_port)
|
||||
return;
|
||||
}
|
||||
|
||||
TAILQ_INIT(&ctx->peers);
|
||||
uc_tailq_init(&ctx->peers);
|
||||
|
||||
ctx->sock_fd.fd = sock_fd;
|
||||
ctx->sock_fd.what = MUX_EV_READ;
|
||||
|
||||
Reference in New Issue
Block a user