neoneo-go/pkg/network/peer.go

45 lines
1.1 KiB
Go
Raw Normal View History

2018-01-26 18:04:13 +00:00
package network
import (
2018-01-29 18:17:49 +00:00
"github.com/anthdm/neo-go/pkg/util"
2018-01-26 18:04:13 +00:00
)
// 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
2018-01-31 19:11:08 +00:00
addr() util.Endpoint
verack() bool
disconnect()
2018-01-31 19:11:08 +00:00
callVersion(*Message)
callGetaddr(*Message)
}
2018-01-31 19:11:08 +00:00
// LocalPeer is the simplest kind of peer, mapped to a server in the
// same process-space.
type LocalPeer struct {
2018-01-31 19:11:08 +00:00
s *Server
nonce uint32
isVerack bool
endpoint util.Endpoint
}
// NewLocalPeer return a LocalPeer.
2018-01-31 19:11:08 +00:00
func NewLocalPeer(s *Server) *LocalPeer {
e, _ := util.EndpointFromString("1.1.1.1:1111")
2018-01-31 19:11:08 +00:00
return &LocalPeer{endpoint: e, s: s}
}
2018-01-31 19:11:08 +00:00
func (p *LocalPeer) callVersion(msg *Message) {
p.s.handleVersionCmd(msg, p)
}
2018-01-31 19:11:08 +00:00
func (p *LocalPeer) callGetaddr(msg *Message) {
p.s.handleGetaddrCmd(msg, p)
}
2018-01-31 19:11:08 +00:00
func (p *LocalPeer) id() uint32 { return p.nonce }
func (p *LocalPeer) verack() bool { return p.isVerack }
func (p *LocalPeer) addr() util.Endpoint { return p.endpoint }
func (p *LocalPeer) disconnect() {}