Trait NodeContext

Source
pub trait NodeContext {
Show 18 associated constants and 1 method const REQUEST_TIMEOUT: u64; const MAX_OUTGOING_PEERS: usize = 10usize; const ASK_FOR_PEERS_INTERVAL: u64 = 3_600u64; const PEER_DB_DUMP_INTERVAL: u64 = 30u64; const TRY_NEW_CONNECTION: u64 = 10u64; const ASSUME_STALE: u64 = 900u64; const IBD_REQUEST_BLOCKS_AGAIN: u64 = 30u64; const MAX_INFLIGHT_REQUESTS: usize = 1_000usize; const FEELER_INTERVAL: u64 = 30u64; const ADDRESS_REARRANGE_INTERVAL: u64 = 3_600u64; const BAN_TIME: u64 = 86_400u64; const BLOCK_CHECK_INTERVAL: u64 = 300u64; const SEND_ADDRESSES_INTERVAL: u64 = 3_600u64; const CONNECTION_TIMEOUT: u64 = 10u64; const BLOCKS_PER_GETDATA: usize = 5usize; const MAX_CONCURRENT_GETDATA: usize = 10usize; const MAINTENANCE_TICK: Duration = _; const NEW_CONNECTIONS_BATCH_SIZE: usize = 4usize; // Provided method fn get_required_services(&self) -> ServiceFlags { ... }
}
Expand description

This trait mainly defines a bunch of constants that we need for the node, but we may tweak those values for each one. It’s also an organized way of defining those constants anyway.

Required Associated Constants§

Source

const REQUEST_TIMEOUT: u64

How long we wait for a peer to respond to our request

Provided Associated Constants§

Source

const MAX_OUTGOING_PEERS: usize = 10usize

Max number of simultaneous connections we initiates we are willing to hold

Source

const ASK_FOR_PEERS_INTERVAL: u64 = 3_600u64

We ask for peers every ASK_FOR_PEERS_INTERVAL seconds

Source

const PEER_DB_DUMP_INTERVAL: u64 = 30u64

Save our database of peers every PEER_DB_DUMP_INTERVAL seconds

Source

const TRY_NEW_CONNECTION: u64 = 10u64

Attempt to open a new connection (if needed) every TRY_NEW_CONNECTION seconds

Source

const ASSUME_STALE: u64 = 900u64

If ASSUME_STALE seconds passed since our last tip update, treat it as stale

Source

const IBD_REQUEST_BLOCKS_AGAIN: u64 = 30u64

While on IBD, if we’ve been without blocks for this long, ask for headers again

Source

const MAX_INFLIGHT_REQUESTS: usize = 1_000usize

Max number of simultaneous inflight requests we allow

Source

const FEELER_INTERVAL: u64 = 30u64

Interval at which we open new feeler connections

Source

const ADDRESS_REARRANGE_INTERVAL: u64 = 3_600u64

Interval at which we rearrange our addresses

Source

const BAN_TIME: u64 = 86_400u64

How long we ban a peer for

Source

const BLOCK_CHECK_INTERVAL: u64 = 300u64

How often we check if we haven’t missed a block

Source

const SEND_ADDRESSES_INTERVAL: u64 = 3_600u64

How often we send our addresses to our peers

Source

const CONNECTION_TIMEOUT: u64 = 10u64

How long should we wait for a peer to respond our connection request. This shouldn’t be greater than TRY_NEW_CONNECTION in order to clear timed-out requests at the same pace.

Source

const BLOCKS_PER_GETDATA: usize = 5usize

How many blocks we can ask in the same request

Source

const MAX_CONCURRENT_GETDATA: usize = 10usize

How many concurrent GETDATA packages we can send at the same time

Source

const MAINTENANCE_TICK: Duration = _

How often we perform the main loop maintenance tasks (checking for timeouts, peers, etc.)

Source

const NEW_CONNECTIONS_BATCH_SIZE: usize = 4usize

How many connections we try at once

Provided Methods§

Source

fn get_required_services(&self) -> ServiceFlags

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§