mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 15:16:43 +00:00
swarm/network: Don't require NodeAdapter to initialise bzz protocol
Signed-off-by: Lewis Marshall <lewis@lmars.net>
This commit is contained in:
parent
5dcae2e26e
commit
bcf2622f29
8 changed files with 61 additions and 85 deletions
|
|
@ -67,8 +67,6 @@ type NodeAdapter interface {
|
|||
Connect([]byte) error
|
||||
Disconnect([]byte) error
|
||||
// Disconnect(*p2p.Peer, p2p.MsgReadWriter)
|
||||
LocalAddr() []byte
|
||||
ParseAddr([]byte, string) ([]byte, error)
|
||||
}
|
||||
|
||||
type ProtocolRunner interface {
|
||||
|
|
|
|||
|
|
@ -56,9 +56,8 @@ const networkId = "420"
|
|||
// newProtocol sets up a protocol
|
||||
// the run function here demonstrates a typical protocol using peerPool, handshake
|
||||
// and messages registered to handlers
|
||||
func newProtocol(pp *p2ptest.TestPeerPool) func(adapters.NodeAdapter) adapters.ProtoCall {
|
||||
func newProtocol(pp *p2ptest.TestPeerPool) adapters.ProtoCall {
|
||||
ct := NewCodeMap("test", 42, 1024, &protoHandshake{}, &hs0{}, &kill{}, &drop{})
|
||||
return func(na adapters.NodeAdapter) adapters.ProtoCall {
|
||||
return func(p *p2p.Peer, rw p2p.MsgReadWriter) error {
|
||||
peer := NewPeer(p, ct, rw)
|
||||
|
||||
|
|
@ -117,7 +116,6 @@ func newProtocol(pp *p2ptest.TestPeerPool) func(adapters.NodeAdapter) adapters.P
|
|||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func protocolTester(t *testing.T, pp *p2ptest.TestPeerPool) *p2ptest.ProtocolTester {
|
||||
id := adapters.RandomNodeId()
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@ type ProtocolTester struct {
|
|||
na adapters.NodeAdapter
|
||||
}
|
||||
|
||||
func NewProtocolTester(t *testing.T, id *adapters.NodeId, n int, run func(id adapters.NodeAdapter) adapters.ProtoCall) *ProtocolTester {
|
||||
func NewProtocolTester(t *testing.T, id *adapters.NodeId, n int, run adapters.ProtoCall) *ProtocolTester {
|
||||
|
||||
net := simulations.NewNetwork(&simulations.NetworkConfig{})
|
||||
naf := func(conf *simulations.NodeConfig) adapters.NodeAdapter {
|
||||
na := adapters.NewSimNode(conf.Id, net)
|
||||
if conf.Id.NodeID == id.NodeID {
|
||||
glog.V(logger.Detail).Infof("adapter run function set to protocol for node %v (=%v)", conf.Id, id)
|
||||
na.Run = run(na)
|
||||
na.Run = run
|
||||
}
|
||||
return na
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/logger"
|
||||
"github.com/ethereum/go-ethereum/logger/glog"
|
||||
"github.com/ethereum/go-ethereum/p2p"
|
||||
"github.com/ethereum/go-ethereum/p2p/adapters"
|
||||
|
|
@ -40,7 +39,6 @@ const (
|
|||
// bzz is the bzz protocol view of a protocols.Peer (itself an extension of p2p.Peer)
|
||||
type bzzPeer struct {
|
||||
*protocols.Peer
|
||||
network adapters.NodeAdapter
|
||||
localAddr *peerAddr
|
||||
*peerAddr // remote address
|
||||
lastActive time.Time
|
||||
|
|
@ -79,14 +77,11 @@ func BzzCodeMap(msgs ...interface{}) *protocols.CodeMap {
|
|||
|
||||
// Bzz is the protocol constructor
|
||||
// returns p2p.Protocol that is to be offered by the node.Service
|
||||
func Bzz(localAddr []byte, na adapters.NodeAdapter, ct *protocols.CodeMap, services func(Peer) error, peerInfo func(id discover.NodeID) interface{}, nodeInfo func() interface{}) *p2p.Protocol {
|
||||
func Bzz(oAddr, uAddr []byte, ct *protocols.CodeMap, services func(Peer) error, peerInfo func(id discover.NodeID) interface{}, nodeInfo func() interface{}) *p2p.Protocol {
|
||||
run := func(p *protocols.Peer) error {
|
||||
addr := &peerAddr{localAddr, na.LocalAddr()}
|
||||
|
||||
bee := &bzzPeer{
|
||||
Peer: p,
|
||||
network: na,
|
||||
localAddr: addr,
|
||||
localAddr: &peerAddr{oAddr, uAddr},
|
||||
}
|
||||
// protocol handshake and its validation
|
||||
// sets remote peer address
|
||||
|
|
@ -193,22 +188,13 @@ func (self *bzzPeer) bzzHandshake() error {
|
|||
}
|
||||
|
||||
rhs := hs.(*bzzHandshake)
|
||||
self.peerAddr = rhs.Addr
|
||||
err = checkBzzHandshake(rhs)
|
||||
if err != nil {
|
||||
glog.V(6).Infof("handshake between %v and %v failed: %v", self.localAddr, self.peerAddr, err)
|
||||
return err
|
||||
}
|
||||
|
||||
addr := rhs.Addr
|
||||
// Addr returns the remote address of the network connection.
|
||||
// with rlpx use this to set adverrtised IP
|
||||
self.localAddr.UAddr, err = self.network.ParseAddr(self.localAddr.UAddr, self.RemoteAddr().String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
glog.V(logger.Debug).Infof("self: advertised net address: %x, local address: %v\npeer: advertised: %v, remote address: %v\n", self.network.LocalAddr(), self.LocalAddr(), NodeId(addr), self.RemoteAddr())
|
||||
self.peerAddr = addr
|
||||
return nil
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,10 +47,7 @@ func newBzzBaseTester(t *testing.T, n int, addr *peerAddr, ct *protocols.CodeMap
|
|||
return services(p)
|
||||
}
|
||||
|
||||
protocall := func(na adapters.NodeAdapter) adapters.ProtoCall {
|
||||
protocol := Bzz(addr.OverlayAddr(), na, ct, srv, nil, nil)
|
||||
return protocol.Run
|
||||
}
|
||||
protocall := Bzz(addr.OverlayAddr(), addr.UnderlayAddr(), ct, srv, nil, nil).Run
|
||||
|
||||
s := p2ptest.NewProtocolTester(t, NodeId(addr), n, protocall)
|
||||
|
||||
|
|
|
|||
|
|
@ -190,10 +190,7 @@ func newPssBaseTester(t *testing.T, addr *peerAddr, n int) *pssTester {
|
|||
})
|
||||
return nil
|
||||
}
|
||||
protocall := func(na adapters.NodeAdapter) adapters.ProtoCall {
|
||||
protocol := Bzz(addr.OverlayAddr(), na, ct, srv, nil, nil)
|
||||
return protocol.Run
|
||||
}
|
||||
protocall := Bzz(addr.OverlayAddr(), addr.UnderlayAddr(), ct, srv, nil, nil).Run
|
||||
|
||||
s := p2ptest.NewProtocolTester(t, NodeId(addr), n, protocall)
|
||||
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ func newNode(id *adapters.NodeId, net *simulations.Network, trigger chan *adapte
|
|||
})
|
||||
return nil
|
||||
}
|
||||
nodeAdapter.Run = network.Bzz(addr.OverlayAddr(), nodeAdapter, codeMap, services, nil, nil).Run
|
||||
nodeAdapter.Run = network.Bzz(addr.OverlayAddr(), addr.UnderlayAddr(), codeMap, services, nil, nil).Run
|
||||
return node
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ func (self *Network) NewSimNode(conf *simulations.NodeConfig) adapters.NodeAdapt
|
|||
}
|
||||
|
||||
ct := network.BzzCodeMap(network.DiscoveryMsgs...) // bzz protocol code map
|
||||
na.Run = network.Bzz(addr.OverlayAddr(), na, ct, services, nil, nil).Run
|
||||
na.Run = network.Bzz(addr.OverlayAddr(), addr.UnderlayAddr(), ct, services, nil, nil).Run
|
||||
connect := func(s string) error {
|
||||
return self.Connect(id, adapters.NewNodeIdFromHex(s))
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue