pub struct CrdsGossip {
    pub crds: RwLock<Crds>,
    pub push: CrdsGossipPush,
    pub pull: CrdsGossipPull,
}

Fields§

§crds: RwLock<Crds>§push: CrdsGossipPush§pull: CrdsGossipPull

Implementations§

source§

impl CrdsGossip

source

pub fn process_push_message( &self, messages: Vec<(Pubkey, Vec<CrdsValue>)>, now: u64 ) -> HashSet<Pubkey>

Process a push message to the network.

Returns unique origins’ pubkeys of upserted values.

source

pub fn prune_received_cache<I>( &self, self_pubkey: &Pubkey, origins: I, stakes: &HashMap<Pubkey, u64> ) -> HashMap<Pubkey, Vec<Pubkey>>where I: IntoIterator<Item = Pubkey>,

Remove redundant paths in the network.

source

pub fn new_push_messages( &self, pending_push_messages: Vec<CrdsValue>, now: u64 ) -> (HashMap<Pubkey, Vec<CrdsValue>>, usize, usize)

source

pub fn process_prune_msg( &self, self_pubkey: &Pubkey, peer: &Pubkey, destination: &Pubkey, origin: &[Pubkey], wallclock: u64, now: u64 ) -> Result<(), CrdsGossipError>

Add the from to the peer’s filter of nodes.

source

pub fn refresh_push_active_set( &self, self_keypair: &Keypair, self_shred_version: u16, stakes: &HashMap<Pubkey, u64>, gossip_validators: Option<&HashSet<Pubkey>>, ping_cache: &Mutex<PingCache>, pings: &mut Vec<(SocketAddr, Ping<[u8; 32]>)>, socket_addr_space: &SocketAddrSpace )

Refresh the push active set.

source

pub fn new_pull_request( &self, thread_pool: &ThreadPool, self_keypair: &Keypair, self_shred_version: u16, now: u64, gossip_validators: Option<&HashSet<Pubkey>>, stakes: &HashMap<Pubkey, u64>, bloom_size: usize, ping_cache: &Mutex<PingCache>, pings: &mut Vec<(SocketAddr, Ping<[u8; 32]>)>, socket_addr_space: &SocketAddrSpace ) -> Result<HashMap<ContactInfo, Vec<CrdsFilter>>, CrdsGossipError>

Generate a random request.

source

pub fn mark_pull_request_creation_time(&self, from: Pubkey, now: u64)

Time when a request to from was initiated.

This is used for weighted random selection during new_pull_request It’s important to use the local nodes request creation time as the weight instead of the response received time otherwise failed nodes will increase their weight.

source

pub fn process_pull_requests<I>(&self, callers: I, now: u64)where I: IntoIterator<Item = CrdsValue>,

Process a pull request and create a response.

source

pub fn generate_pull_responses( &self, thread_pool: &ThreadPool, filters: &[(CrdsValue, CrdsFilter)], output_size_limit: usize, now: u64, stats: &GossipStats ) -> Vec<Vec<CrdsValue>>

source

pub fn filter_pull_responses( &self, timeouts: &HashMap<Pubkey, u64>, response: Vec<CrdsValue>, now: u64, process_pull_stats: &mut ProcessPullStats ) -> (Vec<CrdsValue>, Vec<CrdsValue>, Vec<Hash>)

source

pub fn process_pull_responses( &self, from: &Pubkey, responses: Vec<CrdsValue>, responses_expired_timeout: Vec<CrdsValue>, failed_inserts: Vec<Hash>, now: u64, process_pull_stats: &mut ProcessPullStats )

Process a pull response.

source

pub fn make_timeouts( &self, self_pubkey: Pubkey, stakes: &HashMap<Pubkey, u64>, epoch_duration: Duration ) -> HashMap<Pubkey, u64>

source

pub fn purge( &self, self_pubkey: &Pubkey, thread_pool: &ThreadPool, now: u64, timeouts: &HashMap<Pubkey, u64> ) -> usize

Trait Implementations§

source§

impl Default for CrdsGossip

source§

fn default() -> CrdsGossip

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> AbiExample for T

source§

default fn example() -> T

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32 ) -> TaggedParser<'a, Implicit, Self, E>

source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> TupleTree<T, ()> for T

§

const SIZE: Size = Size{ degree: 0, descendants: 0,}

§

fn descendants(_indirect_level: usize) -> usize

§

fn height() -> usize

§

fn preorder(self, f: &mut impl FnMut(Visit<T>))

§

fn preorder_with_size_hint(self, f: &mut impl FnMut(Visit<T>, Size))

§

fn postorder(self, f: &mut impl FnMut(Visit<T>))

§

fn postorder_with_size_hint(self, f: &mut impl FnMut(Visit<T>, Size))

§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more