Documentation
¶
Index ¶
- func DecodeHex(str string) ([]byte, error)
- func EncodeToHex(str []byte) string
- type Backend
- func (b *Backend) AddNode(nodeStr string) error
- func (b *Backend) Close() error
- func (b *Backend) Deliver() chan string
- func (b *Backend) GetPeers() []*Peer
- func (b *Backend) HandlePacket(packet *Packet) error
- func (b *Backend) Lookup() ([]*Peer, error)
- func (b *Backend) LookupRandom() ([]*Peer, error)
- func (b *Backend) LookupTarget(target []byte) ([]*Peer, error)
- func (b *Backend) NearestPeers() ([]*Peer, error)
- func (b *Backend) NearestPeersFromTarget(target []byte) ([]*Peer, error)
- func (b *Backend) Schedule()
- func (b *Backend) SetBootnodes(bootnodes []string)
- type Discovery
- type DiscoveryConfig
- type Factory
- type MockNetwork
- type MockTransport
- type Packet
- type Peer
- type Transport
- type UDPTransport
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EncodeToHex ¶
Types ¶
type Backend ¶
type Backend struct { ID *ecdsa.PrivateKey // contains filtered or unexported fields }
Backend is the p2p discover backend
func NewBackend ¶
NewBackend creates a new p2p discovery protocol
func (*Backend) AddNode ¶
AddNode adds a new node to the discover process (NOTE: its a sync process) TODO. split in nodeStrToPeer and probe
func (*Backend) HandlePacket ¶
HandlePacket handles an incoming udp packet
func (*Backend) LookupRandom ¶
LookupRandom performs a lookup in a random target TODO, remove peers from lookup response, nobody uses it
func (*Backend) LookupTarget ¶
LookupTarget does a kademlia lookup around target
func (*Backend) NearestPeers ¶
func (*Backend) NearestPeersFromTarget ¶
func (*Backend) SetBootnodes ¶
SetBootnodes sets the bootnodes
type Discovery ¶
type Discovery interface { // Close closes the backend Close() error // Deliver returns discovered elements Deliver() chan string // Schedule starts the discovery Schedule() }
Discovery interface must be implemented for a discovery protocol
type DiscoveryConfig ¶
type DiscoveryConfig struct { // Logger to be used by the backend Logger *log.Logger // Enode is the identification of the node Enode *enode.Enode // Private key of the node to encrypt/decrypt messages Key *ecdsa.PrivateKey Bootnodes []string }
DiscoveryConfig contains configuration parameters
type MockNetwork ¶
type MockNetwork struct {
// contains filtered or unexported fields
}
MockNetwork mocks a network of peers
func (*MockNetwork) NewTransport ¶
func (m *MockNetwork) NewTransport() Transport
NewTransport creates a new mockup transport
type MockTransport ¶
type MockTransport struct {
// contains filtered or unexported fields
}
MockTransport mocks a udp transport
func (*MockTransport) Addr ¶
func (m *MockTransport) Addr() *net.UDPAddr
Addr implements the transport interface
func (*MockTransport) PacketCh ¶
func (m *MockTransport) PacketCh() chan *Packet
PacketCh implements the transport interface
func (*MockTransport) Shutdown ¶
func (m *MockTransport) Shutdown()
Shutdown implements the transport interface
type Peer ¶
type Peer struct { ID string Bytes []byte UDPAddr *net.UDPAddr Last *time.Time // last time pinged TCP uint16 }
Peer is the discovery peer
type Transport ¶
type Transport interface { // Addr returns the bind address of the transport Addr() *net.UDPAddr // PacketCh returns a channel to receive incomming packets PacketCh() chan *Packet // WriteTo writes the payload to the given address WriteTo(b []byte, addr string) (time.Time, error) // Shutdown closes the listener Shutdown() }
Transport is the transport used by discv4
type UDPTransport ¶
type UDPTransport struct {
// contains filtered or unexported fields
}
UDPTransport implements the UDP Transport
func (*UDPTransport) Addr ¶
func (u *UDPTransport) Addr() *net.UDPAddr
Addr implements the transport interface
func (*UDPTransport) PacketCh ¶
func (u *UDPTransport) PacketCh() chan *Packet
PacketCh implements the transport interface
func (*UDPTransport) Shutdown ¶
func (u *UDPTransport) Shutdown()
Shutdown implements the transport interface