Source File
manager.go
Belonging Package
github.com/libp2p/go-libp2p/core/connmgr
// Package connmgr provides connection tracking and management interfaces for libp2p.//// The ConnManager interface exported from this package allows libp2p to enforce an// upper bound on the total number of open connections. To avoid service disruptions,// connections can be tagged with metadata and optionally "protected" to ensure that// essential connections are not arbitrarily cut.package connmgrimport ()// SupportsDecay evaluates if the provided ConnManager supports decay, and if// so, it returns the Decayer object. Refer to godocs on Decayer for more info.func ( ConnManager) (Decayer, bool) {, := .(Decayer)return ,}// ConnManager tracks connections to peers, and allows consumers to associate// metadata with each peer.//// It enables connections to be trimmed based on implementation-defined// heuristics. The ConnManager allows libp2p to enforce an upper bound on the// total number of open connections.//// ConnManagers supporting decaying tags implement Decayer. Use the// SupportsDecay function to safely cast an instance to Decayer, if supported.type ConnManager interface {// TagPeer tags a peer with a string, associating a weight with the tag.TagPeer(peer.ID, string, int)// UntagPeer removes the tagged value from the peer.UntagPeer(p peer.ID, tag string)// UpsertTag updates an existing tag or inserts a new one.//// The connection manager calls the upsert function supplying the current// value of the tag (or zero if inexistent). The return value is used as// the new value of the tag.UpsertTag(p peer.ID, tag string, upsert func(int) int)// GetTagInfo returns the metadata associated with the peer,// or nil if no metadata has been recorded for the peer.GetTagInfo(p peer.ID) *TagInfo// TrimOpenConns terminates open connections based on an implementation-defined// heuristic.TrimOpenConns(ctx context.Context)// Notifee returns an implementation that can be called back to inform of// opened and closed connections.Notifee() network.Notifiee// Protect protects a peer from having its connection(s) pruned.//// Tagging allows different parts of the system to manage protections without interfering with one another.//// Calls to Protect() with the same tag are idempotent. They are not refcounted, so after multiple calls// to Protect() with the same tag, a single Unprotect() call bearing the same tag will revoke the protection.Protect(id peer.ID, tag string)// Unprotect removes a protection that may have been placed on a peer, under the specified tag.//// The return value indicates whether the peer continues to be protected after this call, by way of a different tag.// See notes on Protect() for more info.Unprotect(id peer.ID, tag string) (protected bool)// IsProtected returns true if the peer is protected for some tag; if the tag is the empty string// then it will return true if the peer is protected for any tagIsProtected(id peer.ID, tag string) (protected bool)// CheckLimit will return an error if the connection manager's internal// connection limit exceeds the provided system limit.CheckLimit(l GetConnLimiter) error// Close closes the connection manager and stops background processes.Close() error}// TagInfo stores metadata associated with a peer.type TagInfo struct {FirstSeen time.TimeValue int// Tags maps tag ids to the numerical values.Tags map[string]int// Conns maps connection ids (such as remote multiaddr) to their creation time.Conns map[string]time.Time}// GetConnLimiter provides access to a component's total connection limit.type GetConnLimiter interface {// GetConnLimit returns the total connection limit of the implementing component.GetConnLimit() int}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |