From 620f1cd45f44eb2dc2d9dd16bdf6ba4512a1bd69 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 29 Aug 2013 11:53:34 +0200 Subject: Replace old task queue The handshakes are now schedules in a doubly-linked list that is maintained as a part of the peer structure. --- src/peer.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/peer.h') diff --git a/src/peer.h b/src/peer.h index 39b17a8..4d87e3a 100644 --- a/src/peer.h +++ b/src/peer.h @@ -28,7 +28,6 @@ #define _FASTD_PEER_H_ #include "fastd.h" -#include "task.h" struct fastd_peer { @@ -48,6 +47,9 @@ struct fastd_peer { fastd_remote_t *remotes; fastd_remote_t *next_remote; + struct timespec next_handshake; + fastd_dlist_head_t handshake_entry; + struct timespec last_handshake; fastd_peer_address_t last_handshake_address; @@ -136,9 +138,14 @@ bool fastd_peer_owns_address(fastd_context_t *ctx, const fastd_peer_t *peer, con bool fastd_peer_matches_address(fastd_context_t *ctx, const fastd_peer_t *peer, const fastd_peer_address_t *addr); bool fastd_peer_claim_address(fastd_context_t *ctx, fastd_peer_t *peer, fastd_socket_t *sock, const fastd_peer_address_t *local_addr, const fastd_peer_address_t *remote_addr); void fastd_peer_reset_socket(fastd_context_t *ctx, fastd_peer_t *peer); +void fastd_peer_schedule_handshake(fastd_context_t *ctx, fastd_peer_t *peer, int delay); + +static inline void fastd_peer_schedule_handshake_default(fastd_context_t *ctx, fastd_peer_t *peer) { + fastd_peer_schedule_handshake(ctx, peer, fastd_rand(ctx, 17500, 22500)); +} -static inline void fastd_peer_schedule_handshake(fastd_context_t *ctx, fastd_peer_t *peer) { - fastd_task_schedule_handshake(ctx, peer, fastd_rand(ctx, 17500, 22500)); +static inline void fastd_peer_unschedule_handshake(fastd_context_t *ctx UNUSED, fastd_peer_t *peer) { + fastd_dlist_remove(&peer->handshake_entry); } const fastd_eth_addr_t* fastd_get_source_address(const fastd_context_t *ctx, fastd_buffer_t buffer); -- cgit v1.2.3