pub struct FerripfsBehavior {
pub identify: Behaviour,
pub ping: Behaviour,
pub kademlia: Behaviour<MemoryStore>,
pub mdns: Behaviour,
pub autonat: Behaviour,
pub relay_client: Behaviour,
pub dcutr: Behaviour,
}Expand description
Combined network behavior for ferripfs node.
This behavior combines:
- Identify: Exchange peer information
- Ping: Measure latency to peers
- Kademlia: DHT for peer/content routing
- mDNS: Local peer discovery
- AutoNAT: NAT detection
- Relay: Circuit relay client
- DCUtR: Direct connection upgrade through relay
Fields§
§identify: BehaviourIdentify protocol for exchanging peer info
ping: BehaviourPing protocol for latency measurement
kademlia: Behaviour<MemoryStore>Kademlia DHT for routing
mdns: BehaviourmDNS for local discovery
autonat: BehaviourAutoNAT for NAT detection
relay_client: BehaviourRelay client for NAT traversal
dcutr: BehaviourDCUtR for hole punching
Implementations§
Source§impl FerripfsBehavior
impl FerripfsBehavior
Sourcepub fn new(
local_peer_id: PeerId,
local_public_key: PublicKey,
relay_client: Behaviour,
) -> Result<Self, Box<dyn Error>>
pub fn new( local_peer_id: PeerId, local_public_key: PublicKey, relay_client: Behaviour, ) -> Result<Self, Box<dyn Error>>
Create a new combined behavior.
Sourcepub fn add_address(&mut self, peer_id: &PeerId, addr: Multiaddr)
pub fn add_address(&mut self, peer_id: &PeerId, addr: Multiaddr)
Add a peer address to Kademlia routing table.
Sourcepub fn bootstrap(&mut self) -> Result<QueryId, NoKnownPeers>
pub fn bootstrap(&mut self) -> Result<QueryId, NoKnownPeers>
Bootstrap Kademlia DHT.
Sourcepub fn get_providers(&mut self, key: RecordKey) -> QueryId
pub fn get_providers(&mut self, key: RecordKey) -> QueryId
Get providers for a key.
Sourcepub fn start_providing(&mut self, key: RecordKey) -> Result<QueryId, Error>
pub fn start_providing(&mut self, key: RecordKey) -> Result<QueryId, Error>
Start providing content for a key.
Sourcepub fn get_closest_peers(&mut self, peer_id: PeerId) -> QueryId
pub fn get_closest_peers(&mut self, peer_id: PeerId) -> QueryId
Find the closest peers to a given peer ID.
Sourcepub fn put_value(&mut self, key: RecordKey, value: Vec<u8>) -> QueryId
pub fn put_value(&mut self, key: RecordKey, value: Vec<u8>) -> QueryId
Store a value in the DHT.
Sourcepub fn get_routing_table_info(&mut self) -> (usize, usize)
pub fn get_routing_table_info(&mut self) -> (usize, usize)
Get DHT statistics.
Trait Implementations§
Source§impl NetworkBehaviour for FerripfsBehavior
impl NetworkBehaviour for FerripfsBehavior
Source§type ConnectionHandler = ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<<Behaviour as NetworkBehaviour>::ConnectionHandler, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour<MemoryStore> as NetworkBehaviour>::ConnectionHandler>, <Behaviour<Tokio> as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>
type ConnectionHandler = ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<<Behaviour as NetworkBehaviour>::ConnectionHandler, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour<MemoryStore> as NetworkBehaviour>::ConnectionHandler>, <Behaviour<Tokio> as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>
Handler for all the protocols the network behaviour supports.
Source§type ToSwarm = FerripfsBehaviorEvent
type ToSwarm = FerripfsBehaviorEvent
Event generated by the
NetworkBehaviour and that the swarm will report back.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>
Callback that is invoked for every new inbound connection. Read more
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>
Callback that is invoked for every established 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>
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 handle_established_outbound_connection(
&mut self,
connection_id: ConnectionId,
peer: PeerId,
addr: &Multiaddr,
role_override: Endpoint,
port_use: PortUse,
) -> Result<THandler<Self>, ConnectionDenied>
fn handle_established_outbound_connection( &mut self, connection_id: ConnectionId, peer: PeerId, addr: &Multiaddr, role_override: Endpoint, port_use: PortUse, ) -> Result<THandler<Self>, ConnectionDenied>
Callback that is invoked for every established outbound connection. Read more
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>, )
Informs the behaviour about an event generated by the
ConnectionHandler
dedicated to the peer identified by peer_id. for the behaviour. Read moreSource§fn poll(
&mut self,
cx: &mut Context<'_>,
) -> Poll<ToSwarm<Self::ToSwarm, THandlerInEvent<Self>>>
fn poll( &mut self, cx: &mut Context<'_>, ) -> Poll<ToSwarm<Self::ToSwarm, THandlerInEvent<Self>>>
Polls for things that swarm should do. Read more
Source§fn on_swarm_event(&mut self, event: FromSwarm<'_>)
fn on_swarm_event(&mut self, event: FromSwarm<'_>)
Informs the behaviour about an event from the
Swarm.Auto Trait Implementations§
impl Freeze for FerripfsBehavior
impl !RefUnwindSafe for FerripfsBehavior
impl Send for FerripfsBehavior
impl !Sync for FerripfsBehavior
impl Unpin for FerripfsBehavior
impl !UnwindSafe for FerripfsBehavior
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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