pub struct NetworkApiConfig {Show 16 fields
pub address: IpAddr,
pub port: u16,
pub public_address: Option<IpAddr>,
pub public_port: Option<u16>,
pub ignore_protocol_version: bool,
pub bandwidth_limit: Option<usize>,
pub total_bandwidth_limit: Option<usize>,
pub min_bandwidth_per_connection: Option<usize>,
pub blocked_addresses: Option<HashSet<SocketAddr>>,
pub transient_budget: usize,
pub transient_ttl_secs: u64,
pub min_connections: usize,
pub max_connections: usize,
pub streaming_enabled: bool,
pub streaming_threshold: usize,
pub ledbat_min_ssthresh: Option<usize>,
}Fields§
§address: IpAddrAddress to listen to locally
port: u16Port to expose api on
public_address: Option<IpAddr>Public external address for the network, mandatory for gateways.
public_port: Option<u16>Public external port for the network, mandatory for gateways.
ignore_protocol_version: boolWhether to ignore protocol version compatibility routine while initiating connections.
bandwidth_limit: Option<usize>Bandwidth limit per connection for data transfers (in bytes per second). NOTE: This applies to each connection independently - N connections may use N * bandwidth_limit total. Each connection uses LEDBAT congestion control to yield to foreground traffic. Default: 10 MB/s (10,000,000 bytes/second)
If total_bandwidth_limit is set, this field is ignored and per-connection rates
are derived from: total_bandwidth_limit / active_connections.
total_bandwidth_limit: Option<usize>Total bandwidth limit across ALL connections (in bytes per second).
When set, individual connection rates are computed as: total / active_connections.
This overrides the per-connection bandwidth_limit.
Example: With 50 MB/s total and 5 connections, each gets 10 MB/s.
Default: None (use per-connection bandwidth_limit instead)
min_bandwidth_per_connection: Option<usize>Minimum bandwidth per connection when using total_bandwidth_limit (bytes/sec).
Prevents connection starvation when many connections are active.
If total / N < min, each connection gets min (exceeding total is possible).
Default: 1 MB/s (1,000,000 bytes/second)
blocked_addresses: Option<HashSet<SocketAddr>>List of IP:port addresses to refuse connections to/from.
transient_budget: usizeMaximum number of concurrent transient connections accepted by a gateway.
transient_ttl_secs: u64Time (in seconds) before an unpromoted transient connection is dropped.
min_connections: usizeMinimum desired connections for the ring topology.
max_connections: usizeMaximum allowed connections for the ring topology.
streaming_enabled: boolEnable streaming transport for large transfers (experimental).
When enabled, transfers larger than streaming_threshold use streaming
instead of atomic messages. Default: false
streaming_threshold: usizeThreshold in bytes above which streaming transport is used.
Only applies when streaming_enabled is true.
Default: 65536 (64KB)
ledbat_min_ssthresh: Option<usize>Minimum ssthresh floor for LEDBAT timeout recovery (bytes).
On high-latency paths (>100ms RTT), repeated timeouts can cause ssthresh to collapse to ~5KB, severely limiting throughput recovery. Setting a higher floor prevents this “ssthresh death spiral”.
Default: 102400 (100KB) - suitable for intercontinental connections. Set to None for LAN-only deployments.
Trait Implementations§
Source§impl Clone for NetworkApiConfig
impl Clone for NetworkApiConfig
Source§fn clone(&self) -> NetworkApiConfig
fn clone(&self) -> NetworkApiConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for NetworkApiConfig
impl Debug for NetworkApiConfig
Source§impl<'de> Deserialize<'de> for NetworkApiConfig
impl<'de> Deserialize<'de> for NetworkApiConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for NetworkApiConfig
impl RefUnwindSafe for NetworkApiConfig
impl Send for NetworkApiConfig
impl Sync for NetworkApiConfig
impl Unpin for NetworkApiConfig
impl UnwindSafe for NetworkApiConfig
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.