p2pnode

package
v0.29.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 19, 2023 License: AGPL-3.0 Imports: 28 Imported by: 1

Documentation

Overview

Package p2pnode encapsulates the libp2p library

Index

Constants

View Source
const (
	// MaxConnectAttempt is the maximum number of attempts to be made to connect to a remote node for 1-1 direct communication
	MaxConnectAttempt = 3

	// DefaultMaxPubSubMsgSize defines the maximum message size in publish and multicast modes
	DefaultMaxPubSubMsgSize = 5 * mb // 5 mb

)

Variables

This section is empty.

Functions

func NewGossipSubAdapter

func NewGossipSubAdapter(ctx context.Context, logger zerolog.Logger, h host.Host, cfg p2p.PubSubAdapterConfig) (p2p.PubSubAdapter, error)

Types

type GossipSubAdapter

type GossipSubAdapter struct {
	// contains filtered or unexported fields
}

GossipSubAdapter is a wrapper around the libp2p GossipSub implementation that implements the PubSubAdapter interface for the Flow network.

func (*GossipSubAdapter) GetTopics

func (g *GossipSubAdapter) GetTopics() []string

func (*GossipSubAdapter) Join

func (g *GossipSubAdapter) Join(topic string) (p2p.Topic, error)

func (*GossipSubAdapter) ListPeers

func (g *GossipSubAdapter) ListPeers(topic string) []peer.ID

func (*GossipSubAdapter) RegisterTopicValidator

func (g *GossipSubAdapter) RegisterTopicValidator(topic string, topicValidator p2p.TopicValidatorFunc) error

func (*GossipSubAdapter) UnregisterTopicValidator

func (g *GossipSubAdapter) UnregisterTopicValidator(topic string) error

type GossipSubAdapterConfig

type GossipSubAdapterConfig struct {
	// contains filtered or unexported fields
}

GossipSubAdapterConfig is a wrapper around libp2p pubsub options that implements the PubSubAdapterConfig interface for the Flow network.

func NewGossipSubAdapterConfig

func NewGossipSubAdapterConfig(base *p2p.BasePubSubAdapterConfig) *GossipSubAdapterConfig

func (*GossipSubAdapterConfig) Build

func (g *GossipSubAdapterConfig) Build() []pubsub.Option

func (*GossipSubAdapterConfig) WithAppSpecificRpcInspector

func (g *GossipSubAdapterConfig) WithAppSpecificRpcInspector(f func(peer.ID, *pubsub.RPC) error)

func (*GossipSubAdapterConfig) WithMessageIdFunction

func (g *GossipSubAdapterConfig) WithMessageIdFunction(f func([]byte) string)

func (*GossipSubAdapterConfig) WithRoutingDiscovery

func (g *GossipSubAdapterConfig) WithRoutingDiscovery(routing routing.ContentRouting)

func (*GossipSubAdapterConfig) WithScoreOption

func (g *GossipSubAdapterConfig) WithScoreOption(option p2p.ScoreOptionBuilder)

func (*GossipSubAdapterConfig) WithSubscriptionFilter

func (g *GossipSubAdapterConfig) WithSubscriptionFilter(filter p2p.SubscriptionFilter)

type GossipSubControlMessageMetrics

type GossipSubControlMessageMetrics struct {
	// contains filtered or unexported fields
}

GossipSubControlMessageMetrics is a metrics and observability wrapper component for the incoming RPCs to a GossipSub router. It records metrics on the number of control messages received in each RPC.

func (*GossipSubControlMessageMetrics) ObserveRPC

func (o *GossipSubControlMessageMetrics) ObserveRPC(from peer.ID, rpc *pubsub.RPC)

ObserveRPC is invoked to record metrics on incoming RPC messages.

type GossipSubTopic

type GossipSubTopic struct {
	// contains filtered or unexported fields
}

GossipSubTopic is a wrapper around libp2p pubsub topics that implements the PubSubTopic interface for the Flow network.

func NewGossipSubTopic

func NewGossipSubTopic(topic *pubsub.Topic) *GossipSubTopic

func (*GossipSubTopic) Close

func (g *GossipSubTopic) Close() error

func (*GossipSubTopic) Publish

func (g *GossipSubTopic) Publish(ctx context.Context, bytes []byte) error

func (*GossipSubTopic) String

func (g *GossipSubTopic) String() string

func (*GossipSubTopic) Subscribe

func (g *GossipSubTopic) Subscribe() (p2p.Subscription, error)

type Node

type Node struct {
	component.Component
	sync.RWMutex
	// contains filtered or unexported fields
}

Node is a wrapper around the LibP2P host.

func NewNode

func NewNode(
	logger zerolog.Logger,
	host host.Host,
	pCache *ProtocolPeerCache,
	uniMgr *unicast.Manager,
	peerManager *connection.PeerManager,
) *Node

NewNode creates a new libp2p node and sets its parameters.

func (*Node) AddPeer

func (n *Node) AddPeer(ctx context.Context, peerInfo peer.AddrInfo) error

AddPeer adds a peer to this node by adding it to this node's peerstore and connecting to it. All errors returned from this function can be considered benign.

func (*Node) CreateStream

func (n *Node) CreateStream(ctx context.Context, peerID peer.ID) (libp2pnet.Stream, error)

CreateStream returns an existing stream connected to the peer if it exists, or creates a new stream with it. All errors returned from this function can be considered benign.

func (*Node) GetIPPort

func (n *Node) GetIPPort() (string, string, error)

GetIPPort returns the IP and Port the libp2p node is listening on. All errors returned from this function can be considered benign.

func (*Node) GetPeersForProtocol

func (n *Node) GetPeersForProtocol(pid protocol.ID) peer.IDSlice

GetPeersForProtocol returns slice peer IDs for the specified protocol ID.

func (*Node) HasSubscription

func (n *Node) HasSubscription(topic channels.Topic) bool

HasSubscription returns true if the node currently has an active subscription to the topic.

func (*Node) Host

func (n *Node) Host() host.Host

Host returns pointer to host object of node.

func (*Node) IsConnected

func (n *Node) IsConnected(peerID peer.ID) (bool, error)

IsConnected returns true is address is a direct peer of this node else false

func (*Node) ListPeers

func (n *Node) ListPeers(topic string) []peer.ID

ListPeers returns list of peer IDs for peers subscribed to the topic.

func (*Node) PeerManagerComponent

func (n *Node) PeerManagerComponent() component.Component

PeerManagerComponent returns the component interface of the peer manager.

func (*Node) Publish

func (n *Node) Publish(ctx context.Context, topic channels.Topic, data []byte) error

Publish publishes the given payload on the topic. All errors returned from this function can be considered benign.

func (*Node) RemovePeer

func (n *Node) RemovePeer(peerID peer.ID) error

RemovePeer closes the connection with the peer. All errors returned from this function can be considered benign.

func (*Node) RequestPeerUpdate

func (n *Node) RequestPeerUpdate()

RequestPeerUpdate requests an update to the peer connections of this node using the peer manager.

func (*Node) Routing

func (n *Node) Routing() routing.Routing

Routing returns the node's routing implementation.

func (*Node) RoutingTable

func (n *Node) RoutingTable() *kbucket.RoutingTable

RoutingTable returns the node routing table

func (*Node) SetComponentManager

func (n *Node) SetComponentManager(cm *component.ComponentManager)

SetComponentManager sets the component manager for the node. SetComponentManager may be called at most once.

func (*Node) SetPubSub

func (n *Node) SetPubSub(ps p2p.PubSubAdapter)

SetPubSub sets the node's pubsub implementation. SetPubSub may be called at most once.

func (*Node) SetRouting

func (n *Node) SetRouting(r routing.Routing)

SetRouting sets the node's routing implementation. SetRouting may be called at most once.

func (*Node) Start

func (n *Node) Start(ctx irrecoverable.SignalerContext)

func (*Node) Stop

func (n *Node) Stop() error

Stop terminates the libp2p node. All errors returned from this function can be considered benign.

func (*Node) Subscribe

func (n *Node) Subscribe(topic channels.Topic, topicValidator p2p.TopicValidatorFunc) (p2p.Subscription, error)

Subscribe subscribes the node to the given topic and returns the subscription All errors returned from this function can be considered benign.

func (*Node) UnSubscribe

func (n *Node) UnSubscribe(topic channels.Topic) error

UnSubscribe cancels the subscriber and closes the topic. All errors returned from this function can be considered benign.

func (*Node) WithDefaultUnicastProtocol

func (n *Node) WithDefaultUnicastProtocol(defaultHandler libp2pnet.StreamHandler, preferred []unicast.ProtocolName) error

WithDefaultUnicastProtocol overrides the default handler of the unicast manager and registers all preferred protocols.

func (*Node) WithPeersProvider

func (n *Node) WithPeersProvider(peersProvider p2p.PeersProvider)

WithPeersProvider sets the PeersProvider for the peer manager. If a peer manager factory is set, this method will set the peer manager's PeersProvider.

type ProtocolPeerCache

type ProtocolPeerCache struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

ProtocolPeerCache store a mapping from protocol ID to peers who support that protocol

func NewProtocolPeerCache

func NewProtocolPeerCache(logger zerolog.Logger, h host.Host) (*ProtocolPeerCache, error)

func (*ProtocolPeerCache) AddProtocols

func (p *ProtocolPeerCache) AddProtocols(peerID peer.ID, protocols []protocol.ID)

func (*ProtocolPeerCache) GetPeers

func (p *ProtocolPeerCache) GetPeers(pid protocol.ID) map[peer.ID]struct{}

func (*ProtocolPeerCache) RemovePeer

func (p *ProtocolPeerCache) RemovePeer(peerID peer.ID)

func (*ProtocolPeerCache) RemoveProtocols

func (p *ProtocolPeerCache) RemoveProtocols(peerID peer.ID, protocols []protocol.ID)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL