Documentation ¶
Index ¶
- Constants
- func EnsureIdentity(dir string) (crypto.PrivKey, error)
- func IdentityInfoFromDir(dir string) (string, error)
- func IsNoPeer(p Peer) bool
- type AddressList
- type AutoNATServer
- type Config
- type ConnectionInfo
- type DataStats
- type DeprecatedMaxReservationsPerPeer
- type DiscoveryTimings
- type Host
- func (fh *Host) Connected(p Peer) bool
- func (fh *Host) ConnectedPeerInfo(id peer.ID) *PeerInfo
- func (fh *Host) DHTServerEnabled() bool
- func (fh *Host) GetPeers() []Peer
- func (fh *Host) HaveRelay() bool
- func (fh *Host) Identify(ctx context.Context, p peer.ID) error
- func (fh *Host) KnownAddresses() []ma.Multiaddr
- func (fh *Host) ListenAddresses() []ma.Multiaddr
- func (fh *Host) NATDeviceType() (udpNATType, tcpNATType network.NATDeviceType)
- func (fh *Host) NeedPeerDiscovery() bool
- func (fh *Host) PeerCount() uint64
- func (fh *Host) PeerInfo() peerinfo.PeerInfo
- func (fh *Host) PeerProtocols(p Peer) ([]protocol.ID, error)
- func (fh *Host) Ping() *Ping
- func (fh *Host) ProtocolDataStats() map[protocol.ID]*peerinfo.DataStats
- func (fh *Host) Reachability() network.Reachability
- func (fh *Host) Start() error
- func (fh *Host) Stop() error
- type Opt
- func WithBootnodes(bootnodes map[peer.ID]struct{}) Opt
- func WithConfig(cfg Config) Opt
- func WithDirectNodes(direct map[peer.ID]struct{}) Opt
- func WithIDService(idService identify.IDService) Opt
- func WithLog(logger *zap.Logger) Opt
- func WithNodeReporter(reporter func() error) Opt
- func WithPeerInfo(pi peerinfo.PeerInfo) Opt
- func WithRelayCandidateChannel(relayCh chan<- peer.AddrInfo) Opt
- type Peer
- type PeerInfo
- type PeerRequestStats
- type Ping
- type PingOpt
- type RelayServer
Constants ¶
const ( PublicReachability = "public" PrivateReachability = "private" )
Variables ¶
This section is empty.
Functions ¶
func EnsureIdentity ¶ added in v1.0.0
EnsureIdentity generates an identity key file in given directory.
func IdentityInfoFromDir ¶ added in v1.3.0
IdentityInfoFromDir returns a printable ID from a given identity directory.
Types ¶
type AddressList ¶ added in v1.3.0
AddressList represents a list of addresses.
func AddressListFromString ¶ added in v1.3.0
func AddressListFromString(s string) (AddressList, error)
AddressListFromString parses a string containing a Multiaddr and returns it as an AddressList.
func AddressListFromStringSlice ¶ added in v1.3.0
func AddressListFromStringSlice(s []string) (AddressList, error)
AddressListFromStringSlice parses strings in the slice into Multiaddr values and returns them as an AddressList.
func MustParseAddresses ¶ added in v1.3.0
func MustParseAddresses(s ...string) AddressList
MustParseAddresses parses multiaddr strings into AddressList, and panics upon any parse errors.
func (AddressList) String ¶ added in v1.3.0
func (al AddressList) String() string
String implements Stringer.
type AutoNATServer ¶ added in v1.3.6
type Config ¶ added in v1.0.0
type Config struct { DataDir string LogLevel zapcore.Level GracePeersShutdown time.Duration `mapstructure:"gracepeersshutdown"` MaxMessageSize int `mapstructure:"maxmessagesize"` // see https://lwn.net/Articles/542629/ for reuseport explanation DisableReusePort bool `mapstructure:"disable-reuseport"` DisableNatPort bool `mapstructure:"disable-natport"` DisableConnectionManager bool `mapstructure:"disable-connection-manager"` DisableResourceManager bool `mapstructure:"disable-resource-manager"` DisableDHT bool `mapstructure:"disable-dht"` DisablePubSub bool `mapstructure:"disable-pubsub"` Flood bool `mapstructure:"flood"` Listen AddressList `mapstructure:"listen"` Bootnodes []string `mapstructure:"bootnodes"` Direct []string `mapstructure:"direct"` MinPeers int `mapstructure:"min-peers"` LowPeers int `mapstructure:"low-peers"` HighPeers int `mapstructure:"high-peers"` InboundFraction float64 `mapstructure:"inbound-fraction"` OutboundFraction float64 `mapstructure:"outbound-fraction"` AutoscalePeers bool `mapstructure:"autoscale-peers"` AdvertiseAddress AddressList `mapstructure:"advertise-address"` AcceptQueue int `mapstructure:"p2p-accept-queue"` Metrics bool `mapstructure:"p2p-metrics"` Bootnode bool `mapstructure:"p2p-bootnode"` ForceReachability string `mapstructure:"p2p-reachability"` ForceDHTServer bool `mapstructure:"force-dht-server"` EnableHolepunching bool `mapstructure:"p2p-holepunching"` PrivateNetwork bool `mapstructure:"p2p-private-network"` RelayServer RelayServer `mapstructure:"relay-server"` IP4Blocklist []string `mapstructure:"ip4-blocklist"` IP6Blocklist []string `mapstructure:"ip6-blocklist"` GossipQueueSize int `mapstructure:"gossip-queue-size"` GossipPeerOutboundQueueSize int `mapstructure:"gossip-peer-outbound-queue-size"` GossipValidationThrottle int `mapstructure:"gossip-validation-throttle"` GossipAtxValidationThrottle int `mapstructure:"gossip-atx-validation-throttle"` GossipEvictionStrategy timecache.Strategy `mapstructure:"gossip-eviction-strategy"` PingPeers []string `mapstructure:"ping-peers"` PingInterval time.Duration `mapstructure:"ping-interval"` Relay bool `mapstructure:"relay"` StaticRelays []string `mapstructure:"static-relays"` EnableTCPTransport bool `mapstructure:"enable-tcp-transport"` EnableQUICTransport bool `mapstructure:"enable-quic-transport"` EnableRoutingDiscovery bool `mapstructure:"enable-routing-discovery"` RoutingDiscoveryAdvertise bool `mapstructure:"routing-discovery-advertise"` DiscoveryTimings DiscoveryTimings `mapstructure:"discovery-timings"` AutoNATServer AutoNATServer `mapstructure:"auto-nat-server"` }
Config for all things related to p2p layer.
type ConnectionInfo ¶ added in v1.1.2
type DeprecatedMaxReservationsPerPeer ¶ added in v1.7.8
type DeprecatedMaxReservationsPerPeer struct{}
func (DeprecatedMaxReservationsPerPeer) DeprecatedMsg ¶ added in v1.7.8
func (DeprecatedMaxReservationsPerPeer) DeprecatedMsg() string
DeprecatedMsg implements Deprecated interface.
type DiscoveryTimings ¶ added in v1.3.6
type DiscoveryTimings struct { AdvertiseDelay time.Duration `mapstructure:"advertise-delay"` AdvertiseInterval time.Duration `mapstructure:"advertise-interval"` AdvertiseIntervalSpread time.Duration `mapstructure:"advertise-interval-spread"` AdvertiseRetryDelay time.Duration `mapstructure:"advertise-retry-delay"` FindPeersRetryDelay time.Duration `mapstructure:"find-peers-retry-delay"` MinBackoff time.Duration `mapstructure:"min-backoff"` MaxBackoff time.Duration `mapstructure:"max-backoff"` MinConnBackoff time.Duration `mapstructure:"min-conn-backoff"` MaxConnBackoff time.Duration `mapstructure:"max-conn-backoff"` DialTimeout time.Duration `mapstructure:"dial-timeout"` }
type Host ¶ added in v1.0.0
Host is a convenience wrapper for all p2p related functionality required to run a full spacemesh node.
func AutoStart ¶ added in v1.4.2
func AutoStart(ctx context.Context, logger *zap.Logger, cfg Config, prologue []byte, quicNetCookie handshake.NetworkCookie, opts ...Opt, ) (*Host, error)
AutoStart initializes a new host and starts it.
func New ¶
func New( logger *zap.Logger, cfg Config, prologue []byte, quicNetCookie handshake.NetworkCookie, opts ...Opt, ) (*Host, error)
New initializes libp2p host configured for spacemesh.
func (*Host) Connected ¶ added in v1.1.3
Connected returns true if the specified peer is connected. Peers that only have transient connections to them aren't considered connected.
func (*Host) ConnectedPeerInfo ¶ added in v1.1.2
ConnectedPeerInfo retrieves a peer info object for the given peer.ID, if the given peer is not connected then nil is returned.
func (*Host) DHTServerEnabled ¶ added in v1.3.0
DHTServerEnabled returns true if the server has DHT running in server mode.
func (*Host) HaveRelay ¶ added in v1.3.0
HaveRelay returns true if this host can be used as a relay, that is, it supports relay service and has public reachability.
func (*Host) Identify ¶ added in v1.7.11
Identify ensures that the given peer is identified via libp2p identify protocol. Identification is initiated after connecting to the peer, and the set of protocols for the peer in the ProtoBook is not guaranteed to be correct until identification finishes. Note that the set of the protocols in the ProtoBook for a particular peer may also change via a push identity notification when the peer adds a new handler via SetStreamHandler (e.g. sets up a new Server).
func (*Host) KnownAddresses ¶ added in v1.3.0
KnownAddresses returns the addresses by which the peers know this one.
func (*Host) ListenAddresses ¶ added in v1.3.0
ListenAddresses returns the addresses on which this host listens.
func (*Host) NATDeviceType ¶ added in v1.3.0
func (fh *Host) NATDeviceType() (udpNATType, tcpNATType network.NATDeviceType)
NATDeviceType returns NATDeviceType returns the NAT device types for UDP and TCP so far for this host.
func (*Host) NeedPeerDiscovery ¶ added in v1.3.0
NeedPeerDiscovery returns true if it makes sense to do additional discovery of non-DHT (NATed) peers.
func (*Host) PeerProtocols ¶ added in v1.1.0
PeerProtocols returns the protocols supported by peer.
func (*Host) Ping ¶ added in v1.3.0
Ping returns Ping structure for this Host, if any PingPeers are specified in the config. Otherwise, it returns nil.
func (*Host) ProtocolDataStats ¶ added in v1.6.0
ProtocolDataStats returns per-protocol data stats.
func (*Host) Reachability ¶ added in v1.3.0
func (fh *Host) Reachability() network.Reachability
Reachability returns reachability of the host (public, private, unknown).
type Opt ¶ added in v1.0.0
type Opt func(fh *Host)
Opt is for configuring Host.
func WithBootnodes ¶ added in v1.1.2
func WithDirectNodes ¶ added in v1.1.2
func WithIDService ¶ added in v1.7.11
func WithNodeReporter ¶ added in v1.0.0
WithNodeReporter updates reporter that is notified every time when node added or removed a peer.
func WithPeerInfo ¶ added in v1.6.0
func WithRelayCandidateChannel ¶ added in v1.3.0
type Peer ¶
Peer is an alias to libp2p's peer.ID.
const NoPeer Peer = ""
NoPeer is used when peer doesn't matter.
type PeerInfo ¶ added in v1.1.2
type PeerInfo struct { ID Peer Connections []ConnectionInfo ClientStats PeerRequestStats ServerStats PeerRequestStats DataStats DataStats Tags []string }
PeerInfo groups relevant information about a peer.
type PeerRequestStats ¶ added in v1.6.0
type RelayServer ¶ added in v1.0.7
type RelayServer struct { Enable bool `mapstructure:"enable"` Reservations int `mapstructure:"reservations"` TTL time.Duration `mapstructure:"ttl"` ConnDurationLimit time.Duration `mapstructure:"conn-duration-limit"` ConnDataLimit int64 `mapstructure:"conn-data-limit"` MaxCircuits int `mapstructure:"max-circuits"` BufferSize int `mapstructure:"buffer-size"` MaxReservationsPerPeer DeprecatedMaxReservationsPerPeer `mapstructure:"max-reservations-per-peer"` MaxReservationsPerIP int `mapstructure:"max-reservations-per-ip"` MaxReservationsPerASN int `mapstructure:"max-reservations-per-asn"` }
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
mocks
Package peerinfo is a generated GoMock package.
|
Package peerinfo is a generated GoMock package. |
mocks
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |
nolint
|
nolint |
mocks
Package mocks is a generated GoMock package.
|
Package mocks is a generated GoMock package. |