Documentation ¶
Index ¶
Constants ¶
View Source
const (
CoreProtocolID = "iota-core/1.0.0"
)
View Source
const DefaultReconnectInterval = 5 * time.Second
Variables ¶
View Source
var ( // ErrNotRunning is returned when a peer is added to a stopped or not yet started network manager. ErrNotRunning = ierrors.New("manager not running") // ErrUnknownPeer is returned when the specified peer is not known to the network manager. ErrUnknownPeer = ierrors.New("unknown peer") // ErrLoopbackPeer is returned when the own peer is added. ErrLoopbackPeer = ierrors.New("loopback connection not allowed") // ErrDuplicatePeer is returned when the same peer is added more than once. ErrDuplicatePeer = ierrors.New("already connected") // ErrFirstPacketNotReceived is returned when the first packet from a peer is not received. ErrFirstPacketNotReceived = ierrors.New("first packet not received") // ErrMaxAutopeeringPeersReached is returned when the maximum number of autopeering peers is reached. ErrMaxAutopeeringPeersReached = ierrors.New("max autopeering peers reached") )
Functions ¶
This section is empty.
Types ¶
type ConnectionStatus ¶
type ConnectionStatus string
ConnectionStatus is an enum for the peer connection status in the gossip layer.
const ( // ConnStatusDisconnected means that there is no real connection established in the gossip layer for that peer. ConnStatusDisconnected ConnectionStatus = "disconnected" // ConnStatusConnected means that there is a real connection established in the gossip layer for that peer. ConnStatusConnected ConnectionStatus = "connected" )
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
DB is the peer database, storing previously seen peers and any collected properties of them.
func (*DB) UpdatePeer ¶
UpdatePeer updates a peer in the database.
type Manager ¶
type Manager interface { Endpoint // DialPeer connects to a peer. DialPeer(ctx context.Context, peer *Peer) error // RemovePeer disconnects the peer with the given ID // and removes it from manual peering in case it was added manually. RemovePeer(peerID peer.ID) error // AddManualPeer adds a manual peer to the list of known peers. AddManualPeer(multiAddress multiaddr.Multiaddr) (*Peer, error) // ManualPeer returns the manual peer with the given ID. ManualPeer(peerID peer.ID) (*Peer, error) // ManualPeers returns all the manual peers. ManualPeers(onlyConnected ...bool) []*Peer // OnNeighborAdded registers a callback that gets triggered when a neighbor is added. OnNeighborAdded(handler func(Neighbor)) *event.Hook[func(Neighbor)] // OnNeighborRemoved registers a callback that gets triggered when a neighbor is removed. OnNeighborRemoved(handler func(Neighbor)) *event.Hook[func(Neighbor)] // Neighbor returns the neighbor with the given ID. Neighbor(peerID peer.ID) (Neighbor, error) // NeighborExists checks if a neighbor with the given ID exists. NeighborExists(peerID peer.ID) bool // DisconnectNeighbor disconnects the neighbor with the given ID. DisconnectNeighbor(peerID peer.ID) error // Neighbors returns all the neighbors that are currently connected. Neighbors() []Neighbor // AutopeeringNeighbors returns all the neighbors that are currently connected via autopeering. AutopeeringNeighbors() []Neighbor P2PHost() host.Host Start(ctx context.Context, networkID string) error Shutdown() }
Manager is the network manager interface. Peer is a known node in the network. Neighbor is a Peer with an established connection in the gossip layer.
type Peer ¶
type Peer struct { ID peer.ID PublicKey ed25519.PublicKey PeerAddresses []multiaddr.Multiaddr ConnStatus *atomic.Value RemoveCh chan struct{} DoneCh chan struct{} }
Peer is a known node in the network.
func NewPeerFromAddrInfo ¶
func NewPeerFromMultiAddr ¶
func (*Peer) GetConnStatus ¶
func (p *Peer) GetConnStatus() ConnectionStatus
func (*Peer) SetConnStatus ¶
func (p *Peer) SetConnStatus(cs ConnectionStatus)
func (*Peer) ToAddrInfo ¶
Click to show internal directories.
Click to hide internal directories.