Versions in this module Expand all Collapse all v1 v1.8.7 Sep 21, 2022 v1.2.6 Sep 21, 2022 v1.2.5 Sep 21, 2022 v1.2.1 Sep 21, 2022 v1.0.5 Sep 27, 2022 v1.0.4 Sep 23, 2022 v1.0.3 Sep 23, 2022 v1.0.2 Sep 23, 2022 Changes in this version + var DefaultLimits = ScalingLimitConfig + var InfiniteLimits = LimitConfig + func IsConnScope(name string) bool + func IsSpan(name string) bool + func IsStreamScope(name string) bool + func IsSystemScope(name string) bool + func IsTransientScope(name string) bool + func NewResourceManager(limits Limiter, opts ...Option) (network.ResourceManager, error) + func ParsePeerScopeName(name string) peer.ID + func ParseProtocolScopeName(name string) string + func ParseServiceScopeName(name string) string + type Allowlist struct + func GetAllowlist(rcmgr network.ResourceManager) *Allowlist + func (al *Allowlist) Add(ma multiaddr.Multiaddr) error + func (al *Allowlist) Allowed(ma multiaddr.Multiaddr) bool + func (al *Allowlist) AllowedPeerAndMultiaddr(peerID peer.ID, ma multiaddr.Multiaddr) bool + func (al *Allowlist) Remove(ma multiaddr.Multiaddr) error + type BaseLimit struct + Conns int + ConnsInbound int + ConnsOutbound int + FD int + Memory int64 + Streams int + StreamsInbound int + StreamsOutbound int + func (l *BaseLimit) Apply(l2 BaseLimit) + func (l *BaseLimit) GetConnLimit(dir network.Direction) int + func (l *BaseLimit) GetConnTotalLimit() int + func (l *BaseLimit) GetFDLimit() int + func (l *BaseLimit) GetMemoryLimit() int64 + func (l *BaseLimit) GetStreamLimit(dir network.Direction) int + func (l *BaseLimit) GetStreamTotalLimit() int + type BaseLimitIncrease struct + Conns int + ConnsInbound int + ConnsOutbound int + FDFraction float64 + Memory int64 + Streams int + StreamsInbound int + StreamsOutbound int + func (l *BaseLimitIncrease) Apply(l2 BaseLimitIncrease) + type Limit interface + GetConnLimit func(network.Direction) int + GetConnTotalLimit func() int + GetFDLimit func() int + GetMemoryLimit func() int64 + GetStreamLimit func(network.Direction) int + GetStreamTotalLimit func() int + type LimitConfig struct + AllowlistedSystem BaseLimit + AllowlistedTransient BaseLimit + Conn BaseLimit + Peer map[peer.ID]BaseLimit + PeerDefault BaseLimit + Protocol map[protocol.ID]BaseLimit + ProtocolDefault BaseLimit + ProtocolPeer map[protocol.ID]BaseLimit + ProtocolPeerDefault BaseLimit + Service map[string]BaseLimit + ServiceDefault BaseLimit + ServicePeer map[string]BaseLimit + ServicePeerDefault BaseLimit + Stream BaseLimit + System BaseLimit + Transient BaseLimit + func (cfg *LimitConfig) Apply(c LimitConfig) + func (cfg *LimitConfig) MarshalJSON() ([]byte, error) + type Limiter interface + GetAllowlistedSystemLimits func() Limit + GetAllowlistedTransientLimits func() Limit + GetConnLimits func() Limit + GetPeerLimits func(p peer.ID) Limit + GetProtocolLimits func(proto protocol.ID) Limit + GetProtocolPeerLimits func(proto protocol.ID) Limit + GetServiceLimits func(svc string) Limit + GetServicePeerLimits func(svc string) Limit + GetStreamLimits func(p peer.ID) Limit + GetSystemLimits func() Limit + GetTransientLimits func() Limit + func NewDefaultLimiterFromJSON(in io.Reader) (Limiter, error) + func NewFixedLimiter(conf LimitConfig) Limiter + func NewLimiterFromJSON(in io.Reader, defaults LimitConfig) (Limiter, error) + type MetricsReporter interface + AllowConn func(dir network.Direction, usefd bool) + AllowMemory func(size int) + AllowPeer func(p peer.ID) + AllowProtocol func(proto protocol.ID) + AllowService func(svc string) + AllowStream func(p peer.ID, dir network.Direction) + BlockConn func(dir network.Direction, usefd bool) + BlockMemory func(size int) + BlockPeer func(p peer.ID) + BlockProtocol func(proto protocol.ID) + BlockProtocolPeer func(proto protocol.ID, p peer.ID) + BlockService func(svc string) + BlockServicePeer func(svc string, p peer.ID) + BlockStream func(p peer.ID, dir network.Direction) + type Option func(*resourceManager) error + func WithAllowlistedMultiaddrs(mas []multiaddr.Multiaddr) Option + func WithMetrics(reporter MetricsReporter) Option + func WithTrace(path string) Option + func WithTraceReporter(reporter TraceReporter) Option + type ResourceManagerStat struct + Peers map[peer.ID]network.ScopeStat + Protocols map[protocol.ID]network.ScopeStat + Services map[string]network.ScopeStat + System network.ScopeStat + Transient network.ScopeStat + type ResourceManagerState interface + ListPeers func() []peer.ID + ListProtocols func() []protocol.ID + ListServices func() []string + Stat func() ResourceManagerStat + type ResourceScopeLimiter interface + Limit func() Limit + SetLimit func(Limit) + type ScalingLimitConfig struct + AllowlistedSystemBaseLimit BaseLimit + AllowlistedSystemLimitIncrease BaseLimitIncrease + AllowlistedTransientBaseLimit BaseLimit + AllowlistedTransientLimitIncrease BaseLimitIncrease + ConnBaseLimit BaseLimit + ConnLimitIncrease BaseLimitIncrease + PeerBaseLimit BaseLimit + PeerLimitIncrease BaseLimitIncrease + PeerLimits map[peer.ID]baseLimitConfig + ProtocolBaseLimit BaseLimit + ProtocolLimitIncrease BaseLimitIncrease + ProtocolLimits map[protocol.ID]baseLimitConfig + ProtocolPeerBaseLimit BaseLimit + ProtocolPeerLimitIncrease BaseLimitIncrease + ProtocolPeerLimits map[protocol.ID]baseLimitConfig + ServiceBaseLimit BaseLimit + ServiceLimitIncrease BaseLimitIncrease + ServiceLimits map[string]baseLimitConfig + ServicePeerBaseLimit BaseLimit + ServicePeerLimitIncrease BaseLimitIncrease + ServicePeerLimits map[string]baseLimitConfig + StreamBaseLimit BaseLimit + StreamLimitIncrease BaseLimitIncrease + SystemBaseLimit BaseLimit + SystemLimitIncrease BaseLimitIncrease + TransientBaseLimit BaseLimit + TransientLimitIncrease BaseLimitIncrease + func (cfg *ScalingLimitConfig) AddPeerLimit(p peer.ID, base BaseLimit, inc BaseLimitIncrease) + func (cfg *ScalingLimitConfig) AddProtocolLimit(proto protocol.ID, base BaseLimit, inc BaseLimitIncrease) + func (cfg *ScalingLimitConfig) AddProtocolPeerLimit(proto protocol.ID, base BaseLimit, inc BaseLimitIncrease) + func (cfg *ScalingLimitConfig) AddServiceLimit(svc string, base BaseLimit, inc BaseLimitIncrease) + func (cfg *ScalingLimitConfig) AddServicePeerLimit(svc string, base BaseLimit, inc BaseLimitIncrease) + func (cfg *ScalingLimitConfig) AutoScale() LimitConfig + func (cfg *ScalingLimitConfig) Scale(memory int64, numFD int) LimitConfig + type TraceEvt struct + ConnsIn int + ConnsOut int + Delta int64 + DeltaIn int + DeltaOut int + FD int + Limit interface{} + Memory int64 + Name string + Priority uint8 + Scope *scopeClass + StreamsIn int + StreamsOut int + Time string + Type TraceEvtTyp + type TraceEvtTyp string + const TraceAddConnEvt + const TraceAddStreamEvt + const TraceBlockAddConnEvt + const TraceBlockAddStreamEvt + const TraceBlockReserveMemoryEvt + const TraceCreateScopeEvt + const TraceDestroyScopeEvt + const TraceReleaseMemoryEvt + const TraceRemoveConnEvt + const TraceRemoveStreamEvt + const TraceReserveMemoryEvt + const TraceStartEvt + type TraceReporter interface + ConsumeEvent func(TraceEvt)