libp2p

package
v0.26.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2024 License: Apache-2.0, MIT, Apache-2.0, + 1 more Imports: 74 Imported by: 39

Documentation

Index

Constants

View Source
const NetLimitTraceFilename = "rcmgr.json.gz"

Variables

View Source
var (
	DHTOption       RoutingOption = constructDHTRouting(dht.ModeAuto)
	DHTClientOption               = constructDHTRouting(dht.ModeClient)
	DHTServerOption               = constructDHTRouting(dht.ModeServer)
	NilRouterOption               = constructNilRouting
)
View Source
var ErrNoResourceMgr = fmt.Errorf("missing ResourceMgr: make sure the daemon is running with Swarm.ResourceMgr.Enabled")
View Source
var NatPortMap = simpleOpt(libp2p.NATPortMap())

Functions

func AddrFilters

func AddrFilters(filters []string) func() (*ma.Filters, Libp2pOpts, error)

func AddrsFactory

func AddrsFactory(announce []string, appendAnnouce []string, noAnnounce []string) func() (opts Libp2pOpts, err error)

func AutoNATService

func AutoNATService(throttle *config.AutoNATThrottleConfig) func() Libp2pOpts

func BaseRouting

func BaseRouting(cfg *config.Config) interface{}

func ConnectionManager

func ConnectionManager(low, high int, grace time.Duration) func() (opts Libp2pOpts, err error)

func ContentRouting

func ContentRouting(in p2pOnlineContentRoutingIn) routing.ContentRouting

ContentRouting will get all routers that can do contentRouting and add them all together using a TieredRouter. It will be used for topic discovery.

func DiscoveryHandler

func DiscoveryHandler(mctx helpers.MetricsCtx, lc fx.Lifecycle, host host.Host) *discoveryHandler

func FloodSub

func FloodSub(pubsubOptions ...pubsub.Option) interface{}

func ForceReachability

func ForceReachability(val *config.OptionalString) func() (opts Libp2pOpts, err error)

func GossipSub

func GossipSub(pubsubOptions ...pubsub.Option) interface{}

func HolePunching

func HolePunching(flag config.Flag, hasRelayClient bool) func() (opts Libp2pOpts, err error)

func LimitConfig added in v0.19.0

func LimitConfig(cfg config.SwarmConfig, userResourceOverrides rcmgr.PartialLimitConfig) (limitConfig rcmgr.ConcreteLimitConfig, logMessageForStartup string, err error)

LimitConfig returns the union of the Computed Default Limits and the User Supplied Override Limits.

func ListenOn added in v0.20.0

func ListenOn(addresses []string) interface{}

func MaybeAutoRelay added in v0.16.0

func MaybeAutoRelay(staticRelays []string, cfgPeering config.Peering, enabled bool) fx.Option

func OfflineRouting

func OfflineRouting(dstore ds.Datastore, validator record.Validator) p2pRouterOut

OfflineRouting provides a special Router to the routers list when we are creating a offline node.

func PNet

func PNet(repo repo.Repo) (opts Libp2pOpts, fp PNetFingerprint, err error)

func PNetChecker

func PNetChecker(repo repo.Repo, ph host.Host, lc fx.Lifecycle) error

func Peerstore

func Peerstore(lc fx.Lifecycle) (peerstore.Peerstore, error)

func PstoreAddSelfKeys

func PstoreAddSelfKeys(id peer.ID, sk crypto.PrivKey, ps peerstore.Peerstore) error

func PubsubRouter

func PubsubRouter(mctx helpers.MetricsCtx, lc fx.Lifecycle, in p2pPSRoutingIn) (p2pRouterOut, *namesys.PubsubValueStore, error)

func RelayService

func RelayService(enable bool, relayOpts config.RelayService) func() (opts Libp2pOpts, err error)

func RelayTransport

func RelayTransport(enableRelay bool) func() (opts Libp2pOpts, err error)

func ResourceManager

func ResourceManager(cfg config.SwarmConfig, userResourceOverrides rcmgr.PartialLimitConfig) interface{}

func Routing

func Routing(in p2pOnlineRoutingIn) irouting.ProvideManyRouter

Routing will get all routers obtained from different methods (delegated routers, pub-sub, and so on) and add them all together using a TieredRouter.

func Security

func Security(enabled bool, tptConfig config.Transports) interface{}

func SetupDiscovery

func SetupDiscovery(useMdns bool) func(helpers.MetricsCtx, fx.Lifecycle, host.Host, *discoveryHandler) error

func SmuxTransport

func SmuxTransport(tptConfig config.Transports) func() (opts Libp2pOpts, err error)

func TopicDiscovery

func TopicDiscovery() interface{}

func Transports

func Transports(tptConfig config.Transports) interface{}

func UserAgent

func UserAgent() func() (opts Libp2pOpts, err error)

Types

type AddrInfoChan

type AddrInfoChan chan peer.AddrInfo

type HostOption

type HostOption func(id peer.ID, ps peerstore.Peerstore, options ...libp2p.Option) (host.Host, error)
var DefaultHostOption HostOption = constructPeerHost

type Libp2pOpts

type Libp2pOpts struct {
	fx.Out

	Opts []libp2p.Option `group:"libp2p"`
}

func BandwidthCounter

func BandwidthCounter() (opts Libp2pOpts, reporter *metrics.BandwidthCounter)

func MultiaddrResolver

func MultiaddrResolver(rslv *madns.Resolver) (opts Libp2pOpts, err error)

type LimitsConfigAndUsage added in v0.19.0

type LimitsConfigAndUsage struct {
	// This is duplicated from rcmgr.ResourceManagerStat but using ResourceLimitsAndUsage
	// instead of network.ScopeStat.
	System    ResourceLimitsAndUsage                 `json:",omitempty"`
	Transient ResourceLimitsAndUsage                 `json:",omitempty"`
	Services  map[string]ResourceLimitsAndUsage      `json:",omitempty"`
	Protocols map[protocol.ID]ResourceLimitsAndUsage `json:",omitempty"`
	Peers     map[peer.ID]ResourceLimitsAndUsage     `json:",omitempty"`
}

func MergeLimitsAndStatsIntoLimitsConfigAndUsage added in v0.19.0

func MergeLimitsAndStatsIntoLimitsConfigAndUsage(l rcmgr.ConcreteLimitConfig, stats rcmgr.ResourceManagerStat) LimitsConfigAndUsage

func (LimitsConfigAndUsage) MarshalJSON added in v0.19.0

func (u LimitsConfigAndUsage) MarshalJSON() ([]byte, error)

func (LimitsConfigAndUsage) ToPartialLimitConfig added in v0.19.0

func (u LimitsConfigAndUsage) ToPartialLimitConfig() (result rcmgr.PartialLimitConfig)

type P2PHostIn

type P2PHostIn struct {
	fx.In

	Repo          repo.Repo
	Validator     record.Validator
	HostOption    HostOption
	RoutingOption RoutingOption
	ID            peer.ID
	Peerstore     peerstore.Peerstore

	Opts [][]libp2p.Option `group:"libp2p"`
}

type P2PHostOut

type P2PHostOut struct {
	fx.Out

	Host    host.Host
	Routing routing.Routing `name:"initialrouting"`
}

func Host

func Host(mctx helpers.MetricsCtx, lc fx.Lifecycle, params P2PHostIn) (out P2PHostOut, err error)

type PNetFingerprint

type PNetFingerprint []byte

type ResourceInfo added in v0.19.0

type ResourceInfo struct {
	ScopeName    string
	LimitName    string
	LimitValue   rcmgr.LimitVal64
	CurrentUsage int64
}

type ResourceInfos added in v0.19.0

type ResourceInfos []ResourceInfo

func LimitConfigsToInfo added in v0.19.0

func LimitConfigsToInfo(stats LimitsConfigAndUsage) ResourceInfos

LimitConfigsToInfo gets limits and stats and generates a list of scopes and limits to be printed.

type ResourceLimitsAndUsage added in v0.19.0

type ResourceLimitsAndUsage struct {
	// This is duplicated from rcmgr.ResourceResourceLimits but adding *Usage fields.
	Memory               rcmgr.LimitVal64
	MemoryUsage          int64
	FD                   rcmgr.LimitVal
	FDUsage              int
	Conns                rcmgr.LimitVal
	ConnsUsage           int
	ConnsInbound         rcmgr.LimitVal
	ConnsInboundUsage    int
	ConnsOutbound        rcmgr.LimitVal
	ConnsOutboundUsage   int
	Streams              rcmgr.LimitVal
	StreamsUsage         int
	StreamsInbound       rcmgr.LimitVal
	StreamsInboundUsage  int
	StreamsOutbound      rcmgr.LimitVal
	StreamsOutboundUsage int
}

func (ResourceLimitsAndUsage) ToResourceLimits added in v0.19.0

func (u ResourceLimitsAndUsage) ToResourceLimits() rcmgr.ResourceLimits

type Router

type Router struct {
	routing.Routing

	Priority int // less = more important
}

type RoutingOption

type RoutingOption func(args RoutingOptionArgs) (routing.Routing, error)

func ConstructDefaultRouting added in v0.18.0

func ConstructDefaultRouting(cfg *config.Config, routingOpt RoutingOption) RoutingOption

ConstructDefaultRouting returns routers used when Routing.Type is unset or set to "auto"

func ConstructDelegatedRouting added in v0.16.0

func ConstructDelegatedRouting(routers config.Routers, methods config.Methods, peerID string, addrs config.Addresses, privKey string) RoutingOption

ConstructDelegatedRouting is used when Routing.Type = "custom"

type RoutingOptionArgs added in v0.20.0

type RoutingOptionArgs struct {
	Ctx                           context.Context
	Host                          host.Host
	Datastore                     datastore.Batching
	Validator                     record.Validator
	BootstrapPeers                []peer.AddrInfo
	OptimisticProvide             bool
	OptimisticProvideJobsPoolSize int
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL