mirror of
https://github.com/libp2p/go-libp2p-core.git
synced 2025-01-28 04:30:08 +08:00
52 lines
2.4 KiB
Go
52 lines
2.4 KiB
Go
package connmgr
|
|
|
|
import (
|
|
"github.com/libp2p/go-libp2p/core/connmgr"
|
|
)
|
|
|
|
// ConnectionGater can be implemented by a type that supports active
|
|
// inbound or outbound connection gating.
|
|
//
|
|
// ConnectionGaters are active, whereas ConnManagers tend to be passive.
|
|
//
|
|
// A ConnectionGater will be consulted during different states in the lifecycle
|
|
// of a connection being established/upgraded. Specific functions will be called
|
|
// throughout the process, to allow you to intercept the connection at that stage.
|
|
//
|
|
// InterceptPeerDial is called on an imminent outbound peer dial request, prior
|
|
// to the addresses of that peer being available/resolved. Blocking connections
|
|
// at this stage is typical for blacklisting scenarios.
|
|
//
|
|
// InterceptAddrDial is called on an imminent outbound dial to a peer on a
|
|
// particular address. Blocking connections at this stage is typical for
|
|
// address filtering.
|
|
//
|
|
// InterceptAccept is called as soon as a transport listener receives an
|
|
// inbound connection request, before any upgrade takes place. Transports who
|
|
// accept already secure and/or multiplexed connections (e.g. possibly QUIC)
|
|
// MUST call this method regardless, for correctness/consistency.
|
|
//
|
|
// InterceptSecured is called for both inbound and outbound connections,
|
|
// after a security handshake has taken place and we've authenticated the peer.
|
|
//
|
|
// InterceptUpgraded is called for inbound and outbound connections, after
|
|
// libp2p has finished upgrading the connection entirely to a secure,
|
|
// multiplexed channel.
|
|
//
|
|
// This interface can be used to implement *strict/active* connection management
|
|
// policies, such as hard limiting of connections once a maximum count has been
|
|
// reached, maintaining a peer blacklist, or limiting connections by transport
|
|
// quotas.
|
|
//
|
|
// EXPERIMENTAL: a DISCONNECT protocol/message will be supported in the future.
|
|
// This allows gaters and other components to communicate the intention behind
|
|
// a connection closure, to curtail potential reconnection attempts.
|
|
//
|
|
// For now, InterceptUpgraded can return a non-zero DisconnectReason when
|
|
// blocking a connection, but this interface is likely to change in the future
|
|
// as we solidify this feature. The reason why only this method can handle
|
|
// DisconnectReasons is that we require stream multiplexing capability to open a
|
|
// control protocol stream to transmit the message.
|
|
// Deprecated: use github.com/libp2p/go-libp2p/core/connmgr.ConnectionGater instead
|
|
type ConnectionGater = connmgr.ConnectionGater
|