neoneo-go/pkg/network/peer.go
Anthony De Meulemeester b6d8271b8d
Fixed header sync issue (#17)
* headers can now sync till infinity

* fixed empty hashStop getBlock payload + test

* added more test + more binary decoding/encoding

* bump version
2018-02-07 15:16:50 +01:00

70 lines
1.7 KiB
Go

package network
import (
"github.com/CityOfZion/neo-go/pkg/network/payload"
"github.com/CityOfZion/neo-go/pkg/util"
)
// Peer is the local representation of a remote node. It's an interface that may
// be backed by any concrete transport: local, HTTP, tcp.
type Peer interface {
id() uint32
addr() util.Endpoint
disconnect()
version() *payload.Version
callVersion(*Message) error
callGetaddr(*Message) error
callVerack(*Message) error
callGetdata(*Message) error
callGetblocks(*Message) error
callGetheaders(*Message) error
}
// LocalPeer is the simplest kind of peer, mapped to a server in the
// same process-space.
type LocalPeer struct {
s *Server
nonce uint32
endpoint util.Endpoint
pVersion *payload.Version
}
// NewLocalPeer return a LocalPeer.
func NewLocalPeer(s *Server) *LocalPeer {
e, _ := util.EndpointFromString("1.1.1.1:1111")
return &LocalPeer{endpoint: e, s: s}
}
// Version implements the Peer interface.
func (p *LocalPeer) version() *payload.Version {
return p.pVersion
}
func (p *LocalPeer) callVersion(msg *Message) error {
version := msg.Payload.(*payload.Version)
return p.s.handleVersionCmd(version, p)
}
func (p *LocalPeer) callVerack(msg *Message) error {
return nil
}
func (p *LocalPeer) callGetaddr(msg *Message) error {
return p.s.handleGetaddrCmd(msg, p)
}
func (p *LocalPeer) callGetblocks(msg *Message) error {
return nil
}
func (p *LocalPeer) callGetheaders(msg *Message) error {
return nil
}
func (p *LocalPeer) callGetdata(msg *Message) error {
return nil
}
func (p *LocalPeer) id() uint32 { return p.nonce }
func (p *LocalPeer) addr() util.Endpoint { return p.endpoint }
func (p *LocalPeer) disconnect() {}