Struct libp2p::swarm::SwarmBuilder
source · pub struct SwarmBuilder<TBehaviour> { /* private fields */ }
libp2p::SwarmBuilder
instead of libp2p::swarm::SwarmBuilder
or create a Swarm
directly via Swarm::new
.Expand description
A SwarmBuilder
provides an API for configuring and constructing a Swarm
.
Implementations§
source§impl<TBehaviour> SwarmBuilder<TBehaviour>where
TBehaviour: NetworkBehaviour,
impl<TBehaviour> SwarmBuilder<TBehaviour>where
TBehaviour: NetworkBehaviour,
sourcepub fn with_executor(
transport: Boxed<(PeerId, StreamMuxerBox)>,
behaviour: TBehaviour,
local_peer_id: PeerId,
executor: impl Executor + Send + 'static,
) -> SwarmBuilder<TBehaviour>
pub fn with_executor( transport: Boxed<(PeerId, StreamMuxerBox)>, behaviour: TBehaviour, local_peer_id: PeerId, executor: impl Executor + Send + 'static, ) -> SwarmBuilder<TBehaviour>
Creates a new SwarmBuilder
from the given transport, behaviour, local peer ID and
executor. The Swarm
with its underlying Network
is obtained via
SwarmBuilder::build
.
sourcepub fn with_tokio_executor(
transport: Boxed<(PeerId, StreamMuxerBox)>,
behaviour: TBehaviour,
local_peer_id: PeerId,
) -> SwarmBuilder<TBehaviour>
Available on crate feature tokio
and neither Emscripten nor WASI nor target_os="unknown"
only.
pub fn with_tokio_executor( transport: Boxed<(PeerId, StreamMuxerBox)>, behaviour: TBehaviour, local_peer_id: PeerId, ) -> SwarmBuilder<TBehaviour>
tokio
and neither Emscripten nor WASI nor target_os="unknown"
only.Builds a new SwarmBuilder
from the given transport, behaviour, local peer ID and a
tokio
executor.
sourcepub fn without_executor(
transport: Boxed<(PeerId, StreamMuxerBox)>,
behaviour: TBehaviour,
local_peer_id: PeerId,
) -> SwarmBuilder<TBehaviour>
pub fn without_executor( transport: Boxed<(PeerId, StreamMuxerBox)>, behaviour: TBehaviour, local_peer_id: PeerId, ) -> SwarmBuilder<TBehaviour>
Creates a new SwarmBuilder
from the given transport, behaviour and local peer ID. The
Swarm
with its underlying Network
is obtained via SwarmBuilder::build
.
§⚠️ Performance warning
All connections will be polled on the current task, thus quite bad performance
characteristics should be expected. Whenever possible use an executor and
SwarmBuilder::with_executor
.
sourcepub fn notify_handler_buffer_size(
self,
n: NonZero<usize>,
) -> SwarmBuilder<TBehaviour>
pub fn notify_handler_buffer_size( self, n: NonZero<usize>, ) -> SwarmBuilder<TBehaviour>
Configures the number of events from the NetworkBehaviour
in
destination to the ConnectionHandler
that can be buffered before
the Swarm
has to wait. An individual buffer with this number of
events exists for each individual connection.
The ideal value depends on the executor used, the CPU speed, and the
volume of events. If this value is too low, then the Swarm
will
be sleeping more often than necessary. Increasing this value increases
the overall memory usage.
sourcepub fn per_connection_event_buffer_size(
self,
n: usize,
) -> SwarmBuilder<TBehaviour>
pub fn per_connection_event_buffer_size( self, n: usize, ) -> SwarmBuilder<TBehaviour>
Configures the size of the buffer for events sent by a ConnectionHandler
to the
NetworkBehaviour
.
Each connection has its own buffer.
The ideal value depends on the executor used, the CPU speed and the volume of events.
If this value is too low, then the ConnectionHandler
s will be sleeping more often
than necessary. Increasing this value increases the overall memory
usage, and more importantly the latency between the moment when an
event is emitted and the moment when it is received by the
NetworkBehaviour
.
sourcepub fn dial_concurrency_factor(
self,
factor: NonZero<u8>,
) -> SwarmBuilder<TBehaviour>
pub fn dial_concurrency_factor( self, factor: NonZero<u8>, ) -> SwarmBuilder<TBehaviour>
Number of addresses concurrently dialed for a single outbound connection attempt.
sourcepub fn substream_upgrade_protocol_override(
self,
v: Version,
) -> SwarmBuilder<TBehaviour>
pub fn substream_upgrade_protocol_override( self, v: Version, ) -> SwarmBuilder<TBehaviour>
Configures an override for the substream upgrade protocol to use.
The subtream upgrade protocol is the multistream-select protocol used for protocol negotiation on substreams. Since a listener supports all existing versions, the choice of upgrade protocol only effects the “dialer”, i.e. the peer opening a substream.
Note: If configured, specific upgrade protocols for individual
SubstreamProtocol
s emitted by theNetworkBehaviour
are ignored.
sourcepub fn max_negotiating_inbound_streams(
self,
v: usize,
) -> SwarmBuilder<TBehaviour>
pub fn max_negotiating_inbound_streams( self, v: usize, ) -> SwarmBuilder<TBehaviour>
The maximum number of inbound streams concurrently negotiating on a connection. New inbound streams exceeding the limit are dropped and thus reset.
Note: This only enforces a limit on the number of concurrently
negotiating inbound streams. The total number of inbound streams on a
connection is the sum of negotiating and negotiated streams. A limit on
the total number of streams can be enforced at the StreamMuxerBox
level.
sourcepub fn idle_connection_timeout(
self,
timeout: Duration,
) -> SwarmBuilder<TBehaviour>
pub fn idle_connection_timeout( self, timeout: Duration, ) -> SwarmBuilder<TBehaviour>
How long to keep a connection alive once it is idling.
Defaults to 0.
Auto Trait Implementations§
impl<TBehaviour> Freeze for SwarmBuilder<TBehaviour>where
TBehaviour: Freeze,
impl<TBehaviour> !RefUnwindSafe for SwarmBuilder<TBehaviour>
impl<TBehaviour> Send for SwarmBuilder<TBehaviour>where
TBehaviour: Send,
impl<TBehaviour> !Sync for SwarmBuilder<TBehaviour>
impl<TBehaviour> Unpin for SwarmBuilder<TBehaviour>where
TBehaviour: Unpin,
impl<TBehaviour> !UnwindSafe for SwarmBuilder<TBehaviour>
Blanket Implementations§
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
source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.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> ⓘ
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> ⓘ
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 moresource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.