p2p/host/host library

Host implementations for libp2p.

This package provides implementations of the Host interface.

Classes

AddrSub
A subscription to address updates.
AddrSubManager
A manager for address subscriptions.
BasicBus
BasicBus is a type-based event delivery system
BasicHost
BasicHost is the basic implementation of the Host interface. This particular host implementation:
ExpiringAddr
An address with an expiration time.
MemoryAddrBook
A memory-based implementation of the AddrBook interface.
MemoryKeyBook
A memory-based implementation of the KeyBook interface.
MemoryMetrics
A memory-based implementation of the Metrics interface.
MemoryPeerMetadata
A memory-based implementation of the PeerMetadata interface.
MemoryPeerstore
A memory-based implementation of the Peerstore interface.
MemoryProtoBook
A memory-based implementation of the ProtoBook interface.
MetricsTracer
Metrics for the EventBus implementation.
NATManager
NATManager is a production-ready interface to manage NAT devices and mappings. It leverages advanced NAT discovery, behavior tracking, and mapping logic.
NoopMetricsTracer
A no-op implementation of MetricsTracer that does nothing
PeerAddrs
A collection of peer addresses.
PeerRecordState
PeerstoreManager
PeerstoreManager manages the peerstore by removing peers that have disconnected and haven't reconnected within a grace period.
ProtoSegment
A segment of the protocol book, used for sharding.
SimpleMetricsTracer
A simple implementation of MetricsTracer that logs metrics to the console

Constants

defaultMaxSignedPeerRecords → const int
defaultMaxUnconnectedAddrs → const int
defaultNegotiationTimeout → const Duration
Default negotiation timeout
latencyEWMASmoothing → const double
The smoothing factor for the exponentially weighted moving average.

Functions

bufSize(int size) SubscriptionOpt
Option to set the buffer size for a subscription
createMetricsTracer({bool simple = false}) MetricsTracer
Creates a new MetricsTracer
defaultAddrsFactory(List<MultiAddr> addrs) List<MultiAddr>
Default addresses factory function. Filters out loopback and unspecified addresses from the provided list.
name(String name) SubscriptionOpt
Option to set the name for a subscription
newAddrBook({int maxUnconnectedAddrs = 1000000}) MemoryAddrBook
Creates a new memory-based address book implementation.
newKeyBook() MemoryKeyBook
Creates a new memory-based key book implementation.
newMetrics() MemoryMetrics
Creates a new memory-based metrics implementation.
newNATManager(Network net, {StunClientPool? stunClientPool, Duration? behaviorCheckInterval}) NATManager
Creates a new NAT manager.
newPeerMetadata() MemoryPeerMetadata
Creates a new memory-based peer metadata implementation.
newPeerstore({MemoryMetrics? metrics, MemoryKeyBook? keyBook, MemoryAddrBook? addrBook, MemoryProtoBook? protoBook, MemoryPeerMetadata? peerMetadata}) MemoryPeerstore
Creates a new memory-based peerstore implementation.
newProtoBook({int maxProtos = 128}) MemoryProtoBook
Creates a new memory-based protocol book implementation.
stateful() EmitterOpt
Option to make an emitter stateful
ttlIsConnected(Duration ttl) bool
Returns true if the TTL is at least as long as the connected TTL.
withCleanupInterval(Duration interval) Option
WithCleanupInterval set the clean up interval. During a clean up run peers that disconnected before the grace period are removed. If unset, the interval is set to half the grace period.
withGracePeriod(Duration period) Option
WithGracePeriod sets the grace period. If a peer doesn't reconnect during the grace period, its data is removed. Default: 1 minute.
withMetricsTracer(MetricsTracer metricsTracer) BusOption
Option to set the metrics tracer for a bus

Typedefs

Option = dynamic Function(PeerstoreManager)
A function that configures a PeerstoreManager.

Exceptions / Errors

ErrTooManyProtocols
Error thrown when too many protocols are added for a peer.