Skip to content

eth::EthPeerQueue

Producer/consumer boundary for eth-watch peer candidates. More...

#include <eth_peer_queue.hpp>

Public Functions

Name
EthPeerQueue(std::shared_ptr< discv4::DialScheduler > scheduler, EthPeerQueueConfig config ={})
~EthPeerQueue()
void preload_cached_peers(const std::vector< discv4::ValidatedPeer > & peers)
Enqueue pre-cached RLPx/ETH peer candidates from chain_enodes.json.nodes.
void set_discovery_bootnodes(std::vector< discv4::ValidatedPeer > bootnodes)
Store discovery-only seed nodes from chain_enodes.json.bootnodes.
bool enqueue_discovered_peer(const discv4::DiscoveredPeer & peer)
Enqueue a live peer produced by discovery.
bool enqueue_validated_discovery_peer(const discovery::ValidatedPeer & peer)
Enqueue a validated live peer produced by ENR/discv5 discovery.
bool report_peer_disconnected(const EthPeerDisconnectFeedback & feedback)
Requeue eligible disconnected peers without letting flaky nodes cycle forever.
const std::vector< discv4::ValidatedPeer > & discovery_bootnodes() const
bool needs_discovery() const
size_t cached_peer_count() const
size_t discovered_peer_count() const
size_t requeued_peer_count() const
size_t duplicate_peer_drop_count() const
size_t capacity_drop_count() const
size_t flaky_peer_drop_count() const
size_t too_many_peers_backoff_count() const
size_t backoff_drop_count() const
EthPeerQueueStatsSnapshot stats() const
std::shared_ptr< discv4::DialScheduler > scheduler() const

Detailed Description

class eth::EthPeerQueue;

Producer/consumer boundary for eth-watch peer candidates.

Cached chain peers and live discovery both feed this queue. Discovery seeds are retained separately and are never consumed as direct RLPx/ETH peers.

Public Functions Documentation

function EthPeerQueue

explicit EthPeerQueue(
    std::shared_ptr< discv4::DialScheduler > scheduler,
    EthPeerQueueConfig config ={}
)

function ~EthPeerQueue

~EthPeerQueue()

function preload_cached_peers

void preload_cached_peers(
    const std::vector< discv4::ValidatedPeer > & peers
)

Enqueue pre-cached RLPx/ETH peer candidates from chain_enodes.json.nodes.

function set_discovery_bootnodes

void set_discovery_bootnodes(
    std::vector< discv4::ValidatedPeer > bootnodes
)

Store discovery-only seed nodes from chain_enodes.json.bootnodes.

function enqueue_discovered_peer

bool enqueue_discovered_peer(
    const discv4::DiscoveredPeer & peer
)

Enqueue a live peer produced by discovery.

function enqueue_validated_discovery_peer

bool enqueue_validated_discovery_peer(
    const discovery::ValidatedPeer & peer
)

Enqueue a validated live peer produced by ENR/discv5 discovery.

function report_peer_disconnected

bool report_peer_disconnected(
    const EthPeerDisconnectFeedback & feedback
)

Requeue eligible disconnected peers without letting flaky nodes cycle forever.

function discovery_bootnodes

const std::vector< discv4::ValidatedPeer > & discovery_bootnodes() const

function needs_discovery

bool needs_discovery() const

function cached_peer_count

size_t cached_peer_count() const

function discovered_peer_count

size_t discovered_peer_count() const

function requeued_peer_count

size_t requeued_peer_count() const

function duplicate_peer_drop_count

size_t duplicate_peer_drop_count() const

function capacity_drop_count

size_t capacity_drop_count() const

function flaky_peer_drop_count

size_t flaky_peer_drop_count() const

function too_many_peers_backoff_count

size_t too_many_peers_backoff_count() const

function backoff_drop_count

size_t backoff_drop_count() const

function stats

EthPeerQueueStatsSnapshot stats() const

function scheduler

std::shared_ptr< discv4::DialScheduler > scheduler() const

Updated on 2026-06-05 at 17:22:18 -0700