BillPouchBehaviour

Struct BillPouchBehaviour 

Source
pub struct BillPouchBehaviour {
    pub gossipsub: Behaviour,
    pub kad: Behaviour<MemoryStore>,
    pub identify: Behaviour,
    pub mdns: Behaviour,
    pub fragment_exchange: Behaviour<FragmentRequest, FragmentResponse>,
    pub autonat: Behaviour,
    pub relay: Behaviour,
}
Expand description

Single combined behaviour injected into the libp2p Swarm.

All seven sub-behaviours are polled by the swarm in a single select!-style event loop inside run_network_loop.

Fields§

§gossipsub: Behaviour

Flooding pub/sub: used to broadcast NodeInfo announcements.

§kad: Behaviour<MemoryStore>

Kademlia DHT: distributed peer discovery and content addressing.

§identify: Behaviour

Identify: exchange protocol version string and listen addresses with peers.

§mdns: Behaviour

mDNS: zero-configuration local-network peer discovery via multicast DNS.

§fragment_exchange: Behaviour<FragmentRequest, FragmentResponse>

Direct fragment fetch/push between Pouch nodes.

§autonat: Behaviour

AutoNAT: probes remote peers to detect whether this node is publicly reachable.

Reports [autonat::NatStatus] changes so the daemon can decide whether to activate relay-assisted connectivity.

§relay: Behaviour

Relay client: allows this node to route connections through a relay peer when a direct connection is not possible (e.g. behind symmetric NAT).

Implementations§

Source§

impl BillPouchBehaviour

Source

pub fn new(keypair: &Keypair, relay_client: Behaviour) -> Result<Self>

Build the combined behaviour from a keypair and a relay client handle.

The relay_client is obtained from the SwarmBuilder::with_relay_client() step and must be passed in rather than constructed here.

Configures:

  • Gossipsub with strict message signing and a 10-second heartbeat.
  • Kademlia with an in-memory record store.
  • Identify with the /billpouch/id/1.0.0 protocol string.
  • mDNS with default settings.
  • RequestResponse with the /billpouch/fragment/1.1.0 protocol.
  • AutoNAT with default probe config.
  • Relay client (handle passed by the SwarmBuilder).
§Errors

Returns an error if gossipsub config validation fails or mDNS cannot bind its multicast socket.

Trait Implementations§

Source§

impl NetworkBehaviour for BillPouchBehaviour
where Behaviour: NetworkBehaviour, Behaviour<MemoryStore>: NetworkBehaviour, Behaviour: NetworkBehaviour, Behaviour: NetworkBehaviour, Behaviour<FragmentRequest, FragmentResponse>: NetworkBehaviour, Behaviour: NetworkBehaviour, Behaviour: NetworkBehaviour,

Source§

type ConnectionHandler = ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<ConnectionHandlerSelect<<Behaviour as NetworkBehaviour>::ConnectionHandler, <Behaviour<MemoryStore> as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour<Tokio> as NetworkBehaviour>::ConnectionHandler>, <Behaviour<Codec<FragmentRequest, FragmentResponse>> as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>, <Behaviour as NetworkBehaviour>::ConnectionHandler>

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

type ToSwarm = BillPouchBehaviourEvent

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>

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>

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>

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>

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>, )

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<'_>, ) -> Poll<ToSwarm<Self::ToSwarm, THandlerInEvent<Self>>>

Polls for things that swarm should do. Read more
Source§

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

Informs the behaviour about an event from the Swarm.

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> 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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> Same for T

Source§

type Output = T

Should always be Self
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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