Struct sc_network::discovery::DiscoveryBehaviour
source · pub struct DiscoveryBehaviour { /* private fields */ }
Expand description
Implementation of NetworkBehaviour
that discovers the nodes on the network.
Implementations§
source§impl DiscoveryBehaviour
impl DiscoveryBehaviour
sourcepub fn known_peers(&mut self) -> HashSet<PeerId>
pub fn known_peers(&mut self) -> HashSet<PeerId>
Returns the list of nodes that we know exist in the network.
sourcepub fn add_known_address(&mut self, peer_id: PeerId, addr: Multiaddr)
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.
sourcepub fn add_self_reported_address(
&mut self,
peer_id: &PeerId,
supported_protocols: &[impl AsRef<[u8]>],
addr: Multiaddr
)
pub fn add_self_reported_address( &mut self, peer_id: &PeerId, supported_protocols: &[impl AsRef<[u8]>], 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.
sourcepub fn get_value(&mut self, key: RecordKey)
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.
sourcepub fn put_value(&mut self, key: RecordKey, value: Vec<u8>)
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.
sourcepub fn num_entries_per_kbucket(&mut self) -> Option<Vec<(u32, usize)>>
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.
sourcepub fn num_kademlia_records(&mut self) -> Option<usize>
pub fn num_kademlia_records(&mut self) -> Option<usize>
Returns the number of records in the Kademlia record stores.
sourcepub fn kademlia_records_total_size(&mut self) -> Option<usize>
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.
sourcepub fn can_add_to_dht(addr: &Multiaddr) -> bool
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
impl NetworkBehaviour for DiscoveryBehaviour
§type ConnectionHandler = ToggleConnectionHandler<KademliaHandler<QueryId>>
type ConnectionHandler = ToggleConnectionHandler<KademliaHandler<QueryId>>
§type OutEvent = DiscoveryOut
type OutEvent = DiscoveryOut
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>
fn handle_established_inbound_connection( &mut self, connection_id: ConnectionId, peer: PeerId, local_addr: &Multiaddr, remote_addr: &Multiaddr ) -> Result<THandler<Self>, ConnectionDenied>
source§fn handle_established_outbound_connection(
&mut self,
connection_id: ConnectionId,
peer: PeerId,
addr: &Multiaddr,
role_override: Endpoint
) -> Result<THandler<Self>, ConnectionDenied>
fn handle_established_outbound_connection( &mut self, connection_id: ConnectionId, peer: PeerId, addr: &Multiaddr, role_override: Endpoint ) -> Result<THandler<Self>, ConnectionDenied>
source§fn handle_pending_inbound_connection(
&mut self,
connection_id: ConnectionId,
local_addr: &Multiaddr,
remote_addr: &Multiaddr
) -> Result<(), ConnectionDenied>
fn handle_pending_inbound_connection( &mut self, connection_id: ConnectionId, local_addr: &Multiaddr, remote_addr: &Multiaddr ) -> Result<(), ConnectionDenied>
source§fn handle_pending_outbound_connection(
&mut self,
connection_id: ConnectionId,
maybe_peer: Option<PeerId>,
addresses: &[Multiaddr],
effective_role: Endpoint
) -> Result<Vec<Multiaddr>, ConnectionDenied>
fn handle_pending_outbound_connection( &mut self, connection_id: ConnectionId, maybe_peer: Option<PeerId>, addresses: &[Multiaddr], effective_role: Endpoint ) -> Result<Vec<Multiaddr>, ConnectionDenied>
source§fn on_swarm_event(&mut self, event: FromSwarm<'_, Self::ConnectionHandler>)
fn on_swarm_event(&mut self, event: FromSwarm<'_, Self::ConnectionHandler>)
Swarm
.source§fn on_connection_handler_event(
&mut self,
peer_id: PeerId,
connection_id: ConnectionId,
event: THandlerOutEvent<Self>
)
fn on_connection_handler_event( &mut self, peer_id: PeerId, connection_id: ConnectionId, event: THandlerOutEvent<Self> )
ConnectionHandler
dedicated to the peer identified by peer_id
. for the behaviour. Read moresource§fn poll(
&mut self,
cx: &mut Context<'_>,
params: &mut impl PollParameters
) -> Poll<ToSwarm<Self::OutEvent, THandlerInEvent<Self>>>
fn poll( &mut self, cx: &mut Context<'_>, params: &mut impl PollParameters ) -> Poll<ToSwarm<Self::OutEvent, THandlerInEvent<Self>>>
§fn new_handler(&mut self) -> Self::ConnectionHandler
fn new_handler(&mut self) -> Self::ConnectionHandler
NetworkBehaviour::{handle_pending_inbound_connection,handle_established_inbound_connection,handle_pending_outbound_connection,handle_established_outbound_connection}
instead.ConnectionHandler
for a connection with a peer. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for DiscoveryBehaviour
impl Send for DiscoveryBehaviour
impl Sync for DiscoveryBehaviour
impl Unpin for DiscoveryBehaviour
impl !UnwindSafe for DiscoveryBehaviour
Blanket Implementations§
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
T
. Read moresource§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.