Documentation ¶
Overview ¶
Package connmgr is forked from github.com/libp2p/go-libp2p-core/connmgr/connmgr.go
Index ¶
- Variables
- type BasicConnMgr
- func (cm *BasicConnMgr) Close() error
- func (cm *BasicConnMgr) GetInfo() CMInfo
- func (cm *BasicConnMgr) GetTagInfo(p peer.ID) *connmgr.TagInfo
- func (cm *BasicConnMgr) Notifee() network.Notifiee
- func (cm *BasicConnMgr) Protect(id peer.ID, tag string)
- func (cm *BasicConnMgr) TagPeer(p peer.ID, tag string, val int)
- func (cm *BasicConnMgr) TrimOpenConns(ctx context.Context)
- func (cm *BasicConnMgr) Unprotect(id peer.ID, tag string) (protected bool)
- func (cm *BasicConnMgr) UntagPeer(p peer.ID, tag string)
- func (cm *BasicConnMgr) UpsertTag(p peer.ID, tag string, upsert func(int) int)
- type CMInfo
Constants ¶
This section is empty.
Variables ¶
var SilencePeriod = 5 * time.Second
SilencePeriod refers to the period in which a connection is given leeway by the connection manager before it is handled normally.
var TickerPeriod = 5 * time.Second
TickerPeriod represents the frequency in which we check the number of open connections.
Functions ¶
This section is empty.
Types ¶
type BasicConnMgr ¶
type BasicConnMgr struct {
// contains filtered or unexported fields
}
BasicConnMgr is a ConnManager that trims connections whenever the count exceeds the high watermark. New connections are given a grace period before they're subject to trimming. Trims are automatically run on demand, only if the time from the previous trim is higher than 10 seconds. Furthermore, trims can be explicitly requested through the public interface of this struct (see TrimOpenConns).
See configuration parameters in NewConnManager.
func NewConnManager ¶
func NewConnManager(low, hi int, grace time.Duration) *BasicConnMgr
NewConnManager creates a new BasicConnMgr with the provided params:
- lo and hi are watermarks governing the number of connections that'll be maintained. When the peer count exceeds the 'high watermark', as many peers will be pruned (and their connections terminated) until 'low watermark' peers remain.
- grace is the amount of time a newly opened connection is given before it becomes subject to pruning.
func (*BasicConnMgr) Close ¶
func (cm *BasicConnMgr) Close() error
Close shutsdown the connection manager.
func (*BasicConnMgr) GetInfo ¶
func (cm *BasicConnMgr) GetInfo() CMInfo
GetInfo returns the configuration and status data for this connection manager.
func (*BasicConnMgr) GetTagInfo ¶
func (cm *BasicConnMgr) GetTagInfo(p peer.ID) *connmgr.TagInfo
GetTagInfo is called to fetch the tag information associated with a given peer, nil is returned if p refers to an unknown peer.
func (*BasicConnMgr) Notifee ¶
func (cm *BasicConnMgr) Notifee() network.Notifiee
Notifee returns a sink through which Notifiers can inform the BasicConnMgr when events occur. Currently, the notifee only reacts upon connection events {Connected, Disconnected}.
func (*BasicConnMgr) Protect ¶
func (cm *BasicConnMgr) Protect(id peer.ID, tag string)
Protect is used to protect a peer from being pruned by the connection manager.
func (*BasicConnMgr) TagPeer ¶
func (cm *BasicConnMgr) TagPeer(p peer.ID, tag string, val int)
TagPeer is called to associate a string and integer with a given peer.
func (*BasicConnMgr) TrimOpenConns ¶
func (cm *BasicConnMgr) TrimOpenConns(ctx context.Context)
TrimOpenConns closes the connections of as many peers as needed to make the peer count equal the low watermark. Peers are sorted in ascending order based on their total value, pruning those peers with the lowest scores first, as long as they are not within their grace period.
(a) there's another trim in progress, or (b) the silence period is in effect.
func (*BasicConnMgr) Unprotect ¶
func (cm *BasicConnMgr) Unprotect(id peer.ID, tag string) (protected bool)
Unprotect is used to remove the protection a previously protected peer so that it can be normally pruned by the connection manager.
type CMInfo ¶
type CMInfo struct { // The low watermark, as described in NewConnManager. LowWater int // The high watermark, as described in NewConnManager. HighWater int // The timestamp when the last trim was triggered. LastTrim time.Time // The configured grace period, as described in NewConnManager. GracePeriod time.Duration // The current connection count. ConnCount int }
CMInfo holds the configuration for BasicConnMgr, as well as status data.