Documentation ¶
Index ¶
- Constants
- func IsPrivate(ip net.IP) bool
- type DiscV5
- type Discovery
- type Multiplexer
- func (m Multiplexer) Discover(topic string, period <-chan time.Duration, found chan<- *discv5.Node, ...) error
- func (m Multiplexer) Register(topic string, stop chan struct{}) error
- func (m Multiplexer) Running() (rst bool)
- func (m Multiplexer) Start() (err error)
- func (m Multiplexer) Stop() (err error)
- type Rendezvous
- func (r *Rendezvous) Discover(topic string, period <-chan time.Duration, found chan<- *discv5.Node, ...) error
- func (r *Rendezvous) MakeRecord(srv *ma.Multiaddr) (record enr.Record, err error)
- func (r *Rendezvous) Register(topic string, stop chan struct{}) error
- func (r *Rendezvous) Running() bool
- func (r *Rendezvous) Start() error
- func (r *Rendezvous) Stop() error
Constants ¶
const ( // EthereumV5 is kademlia-based discovery from go-ethereum repository. EthereumV5 = "ethv5" // RendezvousV1 is req/rep based discovery that uses ENR for records. RendezvousV1 = "ethvousv1" )
Variables ¶
This section is empty.
Functions ¶
func IsPrivate ¶ added in v0.86.4
IsPrivate reports whether ip is a private address, according to RFC 1918 (IPv4 addresses) and RFC 4193 (IPv6 addresses). Copied/Adapted from https://go-review.googlesource.com/c/go/+/272668/11/src/net/ip.go Copyright (c) The Go Authors. All rights reserved. @TODO: once Go 1.17 is released in Q42021, remove this function as it will become part of the language
Types ¶
type DiscV5 ¶
type DiscV5 struct {
// contains filtered or unexported fields
}
DiscV5 is a facade for ethereum discv5 implementation.
func (*DiscV5) Discover ¶
func (d *DiscV5) Discover(topic string, period <-chan time.Duration, found chan<- *discv5.Node, lookup chan<- bool) error
Discover creates search request in v5 server. Results will be published to found channel. It will block until period is closed.
func (*DiscV5) Register ¶
Register creates a register request in v5 server. It will block until stop is closed.
type Discovery ¶
type Discovery interface { Running() bool Start() error Stop() error Register(topic string, stop chan struct{}) error Discover(topic string, period <-chan time.Duration, found chan<- *discv5.Node, lookup chan<- bool) error }
Discovery is an abstract interface for using different discovery providers.
type Multiplexer ¶
type Multiplexer struct {
// contains filtered or unexported fields
}
Multiplexer allows to use multiple discoveries behind single Discovery interface.
func NewMultiplexer ¶
func NewMultiplexer(discoveries []Discovery) Multiplexer
NewMultiplexer creates Multiplexer instance.
func (Multiplexer) Discover ¶
func (m Multiplexer) Discover(topic string, period <-chan time.Duration, found chan<- *discv5.Node, lookup chan<- bool) error
Discover shares topic and channles for receiving results. And multiplexer periods that are sent to period channel.
func (Multiplexer) Register ¶
func (m Multiplexer) Register(topic string, stop chan struct{}) error
Register passed topic and stop channel to every discovery and waits till it will return.
func (Multiplexer) Running ¶
func (m Multiplexer) Running() (rst bool)
Running should return true if at least one discovery is running
func (Multiplexer) Start ¶
func (m Multiplexer) Start() (err error)
Start every discovery and stop every started in case if at least one fails.
type Rendezvous ¶
type Rendezvous struct {
// contains filtered or unexported fields
}
Rendezvous is an implementation of discovery interface that uses rendezvous client.
func NewRendezvous ¶
func NewRendezvous(servers []ma.Multiaddr, identity *ecdsa.PrivateKey, node *enode.Node) (*Rendezvous, error)
func NewRendezvousWithENR ¶ added in v0.13.0
func NewRendezvousWithENR(servers []ma.Multiaddr, record enr.Record) *Rendezvous
func (*Rendezvous) Discover ¶
func (r *Rendezvous) Discover( topic string, period <-chan time.Duration, found chan<- *discv5.Node, lookup chan<- bool, ) error
Discover will search for new records every time period fetched from period channel.
func (*Rendezvous) MakeRecord ¶ added in v0.15.1
func (*Rendezvous) Register ¶
func (r *Rendezvous) Register(topic string, stop chan struct{}) error
Register renews registration in the specified server.
func (*Rendezvous) Running ¶
func (r *Rendezvous) Running() bool
func (*Rendezvous) Start ¶
func (r *Rendezvous) Start() error
Start creates client with ephemeral identity.