network

package
v1.2.0-rc2 Latest Latest
Warning

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

Go to latest
Published: Jun 18, 2024 License: MIT Imports: 39 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConnectAsync added in v0.15.0

func ConnectAsync(ctx context.Context, h lp2phost.Host, addrInfo lp2ppeer.AddrInfo, log *logger.SubLogger)

func ConnectSync added in v0.19.0

func ConnectSync(ctx context.Context, h lp2phost.Host, addrInfo lp2ppeer.AddrInfo) error

func HasPID added in v0.15.2

func HasPID(pids []lp2ppeer.ID, pid lp2ppeer.ID) bool

HasPID checks if a peer ID exists in a list of peer IDs.

func IPToMultiAddr added in v0.16.1

func IPToMultiAddr(ip string, port int) (multiaddr.Multiaddr, error)

func MakeAddrInfos added in v0.16.1

func MakeAddrInfos(addrs []string) ([]lp2ppeer.AddrInfo, error)

MakeAddrInfos converts a slice of string peer addresses to AddrInfo.

func MakeMultiAddrs added in v0.16.1

func MakeMultiAddrs(addrs []string) ([]multiaddr.Multiaddr, error)

MakeMultiAddrs converts a slice of string peer addresses to MultiAddress.

func MessageIDFunc added in v0.17.0

func MessageIDFunc(m *lp2pspb.Message) string

func PrivateSubnets added in v0.16.1

func PrivateSubnets() []*net.IPNet

func SubnetsToFilters added in v0.16.1

func SubnetsToFilters(subnets []*net.IPNet, action multiaddr.Action) *multiaddr.Filters

Types

type Config

type Config struct {
	NetworkKey           string   `toml:"network_key"`
	PublicAddrString     string   `toml:"public_addr"`
	ListenAddrStrings    []string `toml:"listen_addrs"`
	BootstrapAddrStrings []string `toml:"bootstrap_addrs"`
	MaxConns             int      `toml:"max_connections"`
	EnableUDP            bool     `toml:"enable_udp"`
	EnableNATService     bool     `toml:"enable_nat_service"`
	EnableUPnP           bool     `toml:"enable_upnp"`
	EnableRelay          bool     `toml:"enable_relay"`
	EnableRelayService   bool     `toml:"enable_relay_service"`
	EnableMdns           bool     `toml:"enable_mdns"`
	EnableMetrics        bool     `toml:"enable_metrics"`
	ForcePrivateNetwork  bool     `toml:"force_private_network"`

	// Private configs
	NetworkName                 string   `toml:"-"`
	DefaultPort                 int      `toml:"-"`
	DefaultBootstrapAddrStrings []string `toml:"-"`
	IsBootstrapper              bool     `toml:"-"`
}

func DefaultConfig

func DefaultConfig() *Config

func (*Config) BasicCheck added in v0.15.0

func (conf *Config) BasicCheck() error

BasicCheck performs basic checks on the configuration.

func (*Config) BootstrapAddrInfos added in v0.17.0

func (conf *Config) BootstrapAddrInfos() []lp2ppeer.AddrInfo

func (*Config) CheckIsBootstrapper added in v0.18.3

func (conf *Config) CheckIsBootstrapper(pid lp2pcore.PeerID)

func (*Config) ListenAddrs added in v0.17.0

func (conf *Config) ListenAddrs() []multiaddr.Multiaddr

func (*Config) MinConns added in v0.15.2

func (conf *Config) MinConns() int

func (*Config) PublicAddr added in v0.17.0

func (conf *Config) PublicAddr() multiaddr.Multiaddr

type ConfigError added in v0.20.0

type ConfigError struct {
	Reason string
}

ConfigError is returned when the config is not valid with a descriptive Reason message.

func (ConfigError) Error added in v0.20.0

func (e ConfigError) Error() string

type ConnectEvent added in v0.15.0

type ConnectEvent struct {
	PeerID        lp2pcore.PeerID
	RemoteAddress string
	Direction     string
}

ConnectEvent represents a peer connection event.

func (*ConnectEvent) Type added in v0.15.0

func (*ConnectEvent) Type() EventType

type ConnectionGater added in v0.16.1

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

func NewConnectionGater added in v0.16.1

func NewConnectionGater(conf *Config, log *logger.SubLogger) (*ConnectionGater, error)

func (*ConnectionGater) InterceptAccept added in v0.16.1

func (g *ConnectionGater) InterceptAccept(cma lp2pnetwork.ConnMultiaddrs) bool

func (*ConnectionGater) InterceptAddrDial added in v0.16.1

func (g *ConnectionGater) InterceptAddrDial(pid lp2ppeer.ID, ma multiaddr.Multiaddr) bool

func (*ConnectionGater) InterceptPeerDial added in v0.16.1

func (g *ConnectionGater) InterceptPeerDial(pid lp2ppeer.ID) bool

func (*ConnectionGater) InterceptSecured added in v0.16.1

func (*ConnectionGater) InterceptUpgraded added in v0.16.1

func (*ConnectionGater) SetPeerManager added in v0.17.0

func (g *ConnectionGater) SetPeerManager(peerMgr *peerMgr)

type DisconnectEvent added in v0.15.0

type DisconnectEvent struct {
	PeerID lp2pcore.PeerID
}

DisconnectEvent represents a peer disconnection event.

func (*DisconnectEvent) Type added in v0.15.0

func (*DisconnectEvent) Type() EventType

type Event

type Event interface {
	Type() EventType
}

type EventType

type EventType int
const (
	EventTypeConnect    EventType = 1
	EventTypeDisconnect EventType = 2
	EventTypeProtocols  EventType = 3
	EventTypeGossip     EventType = 4
	EventTypeStream     EventType = 5
)

func (EventType) String

func (t EventType) String() string

type GossipMessage

type GossipMessage struct {
	From    lp2pcore.PeerID
	Data    []byte
	TopicID TopicID
}

GossipMessage represents message from PubSub module. `From` is the ID of the peer that we received a message from.

func (*GossipMessage) Type

func (*GossipMessage) Type() EventType

type InvalidTopicError added in v0.15.0

type InvalidTopicError struct {
	TopicID TopicID
}

InvalidTopicError is returned when the Pub-Sub topic is invalid.

func (InvalidTopicError) Error added in v0.15.0

func (e InvalidTopicError) Error() string

type LibP2PError added in v0.15.0

type LibP2PError struct {
	Err error
}

LibP2PError is returned when an underlying libp2p operation encounters an error.

func (LibP2PError) Error added in v0.15.0

func (e LibP2PError) Error() string

type MockNetwork

type MockNetwork struct {
	*testsuite.TestSuite

	PublishCh chan PublishData
	EventCh   chan Event
	ID        lp2ppeer.ID
	OtherNets []*MockNetwork
	SendError error
}

func MockingNetwork

func MockingNetwork(ts *testsuite.TestSuite, id lp2ppeer.ID) *MockNetwork

func (*MockNetwork) AddAnotherNetwork

func (mock *MockNetwork) AddAnotherNetwork(net *MockNetwork)

func (*MockNetwork) Broadcast

func (mock *MockNetwork) Broadcast(data []byte, _ TopicID) error

func (*MockNetwork) CloseConnection

func (mock *MockNetwork) CloseConnection(pid lp2ppeer.ID)

func (*MockNetwork) EventChannel

func (mock *MockNetwork) EventChannel() <-chan Event

func (*MockNetwork) HostAddrs added in v0.18.0

func (*MockNetwork) HostAddrs() []string

func (*MockNetwork) IsClosed

func (mock *MockNetwork) IsClosed(pid lp2ppeer.ID) bool

func (*MockNetwork) JoinTopic added in v1.2.0

func (*MockNetwork) JoinTopic(_ TopicID, _ ShouldPropagate) error

func (*MockNetwork) Name added in v0.19.0

func (*MockNetwork) Name() string

func (*MockNetwork) NumConnectedPeers

func (mock *MockNetwork) NumConnectedPeers() int

func (*MockNetwork) NumInbound added in v1.0.1

func (*MockNetwork) NumInbound() int

func (*MockNetwork) NumOutbound added in v1.0.1

func (*MockNetwork) NumOutbound() int

func (*MockNetwork) Protect added in v0.17.0

func (*MockNetwork) Protect(_ lp2pcore.PeerID, _ string)

func (*MockNetwork) Protocols added in v0.19.0

func (*MockNetwork) Protocols() []string

func (*MockNetwork) ReachabilityStatus added in v0.18.0

func (*MockNetwork) ReachabilityStatus() string

func (*MockNetwork) SelfID

func (mock *MockNetwork) SelfID() lp2ppeer.ID

func (*MockNetwork) SendTo

func (mock *MockNetwork) SendTo(data []byte, pid lp2pcore.PeerID) error

func (*MockNetwork) SendToOthers

func (mock *MockNetwork) SendToOthers(data []byte, target *lp2ppeer.ID)

func (*MockNetwork) Start

func (*MockNetwork) Start() error

func (*MockNetwork) Stop

func (*MockNetwork) Stop()

type Network

type Network interface {
	Start() error
	Stop()
	Protect(lp2pcore.PeerID, string)
	EventChannel() <-chan Event
	Broadcast([]byte, TopicID) error
	SendTo([]byte, lp2pcore.PeerID) error
	JoinTopic(TopicID, ShouldPropagate) error
	CloseConnection(lp2pcore.PeerID)
	SelfID() lp2pcore.PeerID
	NumConnectedPeers() int
	NumInbound() int
	NumOutbound() int
	ReachabilityStatus() string
	HostAddrs() []string
	Name() string
	Protocols() []string
}

func NewNetwork

func NewNetwork(conf *Config) (Network, error)

type NotSubscribedError added in v0.15.0

type NotSubscribedError struct {
	TopicID TopicID
}

NotSubscribedError is returned when the peer is not subscribed to a specific topic.

func (NotSubscribedError) Error added in v0.15.0

func (e NotSubscribedError) Error() string

type NotifeeService added in v0.15.0

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

func (*NotifeeService) Connected added in v0.15.0

func (s *NotifeeService) Connected(_ lp2pnetwork.Network, conn lp2pnetwork.Conn)

func (*NotifeeService) Disconnected added in v0.15.0

func (s *NotifeeService) Disconnected(_ lp2pnetwork.Network, conn lp2pnetwork.Conn)

func (*NotifeeService) Listen added in v0.15.0

func (s *NotifeeService) Listen(_ lp2pnetwork.Network, ma multiaddr.Multiaddr)

func (*NotifeeService) ListenClose added in v0.15.0

func (s *NotifeeService) ListenClose(_ lp2pnetwork.Network, ma multiaddr.Multiaddr)

ListenClose is called when your node stops listening on an address.

func (*NotifeeService) Reachability added in v0.20.0

func (s *NotifeeService) Reachability() lp2pnetwork.Reachability

func (*NotifeeService) Start added in v0.18.0

func (s *NotifeeService) Start()

func (*NotifeeService) Stop added in v0.18.0

func (s *NotifeeService) Stop()

type ProtocolsEvents added in v0.18.0

type ProtocolsEvents struct {
	PeerID    lp2pcore.PeerID
	Protocols []string
}

ProtocolsEvents represents updating protocols event.

func (*ProtocolsEvents) Type added in v0.18.0

func (*ProtocolsEvents) Type() EventType

type PublishData added in v0.15.0

type PublishData struct {
	Data   []byte
	Target *lp2pcore.PeerID
}

type ShouldPropagate added in v0.17.0

type ShouldPropagate func(*GossipMessage) bool

ShouldPropagate determines whether a message should be disregarded: it will be neither delivered to the application nor forwarded to the network.

type StreamMessage

type StreamMessage struct {
	From   lp2pcore.PeerID
	Reader io.ReadCloser
}

StreamMessage represents message from Stream module. `From` is the ID of the peer that we received a message from.

func (*StreamMessage) Type

func (*StreamMessage) Type() EventType

type TopicID

type TopicID int
const (
	TopicIDBlock       TopicID = 1
	TopicIDTransaction TopicID = 2
	TopicIDConsensus   TopicID = 3
)

func (TopicID) String

func (t TopicID) String() string

Jump to

Keyboard shortcuts

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