sc_network::discovery

Struct DiscoveryBehaviour

Source
pub struct DiscoveryBehaviour { /* private fields */ }
Expand description

Implementation of NetworkBehaviour that discovers the nodes on the network.

Implementations§

Source§

impl DiscoveryBehaviour

Source

pub fn known_peers(&mut self) -> HashSet<PeerId>

Returns the list of nodes that we know exist in the network.

Source

pub fn add_known_address(&mut self, peer_id: PeerId, addr: Multiaddr)

Adds a hard-coded address for the given peer, that never expires.

This adds an entry to the parameter that was passed to new.

If we didn’t know this address before, also generates a Discovered event.

Source

pub fn add_self_reported_address( &mut self, peer_id: &PeerId, supported_protocols: &[StreamProtocol], addr: Multiaddr, )

Add a self-reported address of a remote peer to the k-buckets of the DHT if it has compatible supported_protocols.

Note: It is important that you call this method. The discovery mechanism will not automatically add connecting peers to the Kademlia k-buckets.

Source

pub fn get_value(&mut self, key: RecordKey)

Start fetching a record from the DHT.

A corresponding ValueFound or ValueNotFound event will later be generated.

Source

pub fn put_value(&mut self, key: RecordKey, value: Vec<u8>)

Start putting a record into the DHT. Other nodes can later fetch that value with get_value.

A corresponding ValuePut or ValuePutFailed event will later be generated.

Source

pub fn put_record_to( &mut self, record: Record, peers: HashSet<PeerId>, update_local_storage: bool, )

Puts a record into the DHT on the provided peers

If update_local_storage is true, the local storage is update as well.

Source

pub fn store_record( &mut self, record_key: RecordKey, record_value: Vec<u8>, publisher: Option<PeerId>, expires: Option<Instant>, )

Store a record in the Kademlia record store.

Source

pub fn num_entries_per_kbucket(&mut self) -> Option<Vec<(u32, usize)>>

Returns the number of nodes in each Kademlia kbucket for each Kademlia instance.

Identifies Kademlia instances by their ProtocolId and kbuckets by the base 2 logarithm of their lower bound.

Source

pub fn num_kademlia_records(&mut self) -> Option<usize>

Returns the number of records in the Kademlia record stores.

Source

pub fn kademlia_records_total_size(&mut self) -> Option<usize>

Returns the total size in bytes of all the records in the Kademlia record stores.

Source

pub fn can_add_to_dht(addr: &Multiaddr) -> bool

Can the given Multiaddr be put into the DHT?

This test is successful only for global IP addresses and DNS names.

Trait Implementations§

Source§

impl NetworkBehaviour for DiscoveryBehaviour

Source§

type ConnectionHandler = ToggleConnectionHandler<<Behaviour<MemoryStore> as NetworkBehaviour>::ConnectionHandler>

Handler for all the protocols the network behaviour supports.
Source§

type ToSwarm = DiscoveryOut

Event generated by the NetworkBehaviour and that the swarm will report back.
Source§

fn handle_established_inbound_connection( &mut self, connection_id: ConnectionId, peer: PeerId, local_addr: &Multiaddr, remote_addr: &Multiaddr, ) -> Result<THandler<Self>, ConnectionDenied>

Callback that is invoked for every established inbound connection. Read more
Source§

fn handle_established_outbound_connection( &mut self, connection_id: ConnectionId, peer: PeerId, addr: &Multiaddr, role_override: Endpoint, ) -> Result<THandler<Self>, ConnectionDenied>

Callback that is invoked for every established outbound connection. Read more
Source§

fn handle_pending_inbound_connection( &mut self, connection_id: ConnectionId, local_addr: &Multiaddr, remote_addr: &Multiaddr, ) -> Result<(), ConnectionDenied>

Callback that is invoked for every new inbound connection. Read more
Source§

fn handle_pending_outbound_connection( &mut self, connection_id: ConnectionId, maybe_peer: Option<PeerId>, addresses: &[Multiaddr], effective_role: Endpoint, ) -> Result<Vec<Multiaddr>, ConnectionDenied>

Callback that is invoked for every outbound connection attempt. Read more
Source§

fn on_swarm_event(&mut self, event: FromSwarm<'_, Self::ConnectionHandler>)

Informs the behaviour about an event from the Swarm.
Source§

fn on_connection_handler_event( &mut self, peer_id: PeerId, connection_id: ConnectionId, event: THandlerOutEvent<Self>, )

Informs the behaviour about an event generated by the ConnectionHandler dedicated to the peer identified by peer_id. for the behaviour. Read more
Source§

fn poll( &mut self, cx: &mut Context<'_>, params: &mut impl PollParameters, ) -> Poll<ToSwarm<Self::ToSwarm, THandlerInEvent<Self>>>

Polls for things that swarm should do. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CheckedConversion for T

Source§

fn checked_from<T>(t: T) -> Option<Self>
where Self: TryFrom<T>,

Convert from a value of T into an equivalent instance of Option<Self>. Read more
Source§

fn checked_into<T>(self) -> Option<T>
where Self: TryInto<T>,

Consume self to return Some equivalent value of Option<T>. 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 T
where 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, Outer> IsWrappedBy<Outer> for T
where Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

Source§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

Source§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatedConversion for T

Source§

fn saturated_from<T>(t: T) -> Self
where Self: UniqueSaturatedFrom<T>,

Convert from a value of T into an equivalent instance of Self. Read more
Source§

fn saturated_into<T>(self) -> T
where Self: UniqueSaturatedInto<T>,

Consume self to return an equivalent value of T. Read more
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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.
Source§

impl<S, T> UncheckedInto<T> for S
where T: UncheckedFrom<S>,

Source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
Source§

impl<T, S> UniqueSaturatedInto<T> for S
where T: Bounded, S: TryInto<T>,

Source§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
Source§

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

Source§

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
Source§

impl<T> JsonSchemaMaybe for T