mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 15:16:43 +00:00
p2p: fix service func register
This commit is contained in:
parent
dc58516e26
commit
31d9c08d3b
3 changed files with 17 additions and 22 deletions
|
|
@ -37,7 +37,6 @@ import (
|
|||
type SimAdapter struct {
|
||||
mtx sync.RWMutex
|
||||
nodes map[discover.NodeID]*SimNode
|
||||
services map[string]ServiceFunc
|
||||
}
|
||||
|
||||
// NewSimAdapter creates a SimAdapter which is capable of running in-memory
|
||||
|
|
@ -46,7 +45,6 @@ type SimAdapter struct {
|
|||
func NewSimAdapter(services map[string]ServiceFunc) *SimAdapter {
|
||||
return &SimAdapter{
|
||||
nodes: make(map[discover.NodeID]*SimNode),
|
||||
services: services,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -88,12 +86,6 @@ func (s *SimAdapter) NewNode(config *NodeConfig) (Node, error) {
|
|||
//}
|
||||
//service := serviceFunc(id)
|
||||
|
||||
for _, service := range s.services[config.Service](id, nil) {
|
||||
for _, proto := range service.Protocols() {
|
||||
nodeprotos = append(nodeprotos, proto)
|
||||
}
|
||||
}
|
||||
|
||||
_, err := node.New(&node.Config{
|
||||
P2P: p2p.Config{
|
||||
PrivateKey: config.PrivateKey,
|
||||
|
|
@ -103,15 +95,20 @@ func (s *SimAdapter) NewNode(config *NodeConfig) (Node, error) {
|
|||
Dialer: s,
|
||||
EnableMsgEvents: true,
|
||||
},
|
||||
NoUSB: true,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, service := range serviceFuncs[config.Service](id, nil) {
|
||||
for _, proto := range service.Protocols() {
|
||||
nodeprotos = append(nodeprotos, proto)
|
||||
}
|
||||
}
|
||||
|
||||
simnode := &SimNode{
|
||||
Id: id,
|
||||
serviceFunc: s.services[config.Service],
|
||||
serviceFunc: serviceFuncs[config.Service],
|
||||
adapter: s,
|
||||
config: config,
|
||||
running: []node.Service{},
|
||||
|
|
@ -284,7 +281,7 @@ func (self *SimNode) Stop() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Service returns the underlying running node.Service matching the supplied servuce type
|
||||
// Service returns the underlying running node.Service matching the supplied service type
|
||||
func (self *SimNode) Service(servicetype interface{}) node.Service {
|
||||
self.lock.Lock()
|
||||
defer self.lock.Unlock()
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import (
|
|||
"crypto/ecdsa"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
|
||||
|
|
@ -215,11 +216,9 @@ var serviceFuncs = make(Services)
|
|||
// start devp2p nodes
|
||||
func RegisterServices(services Services) {
|
||||
for name, f := range services {
|
||||
// TODO: FIXME: protocol tester if called more than once, throws an error so for now
|
||||
// just overwrite
|
||||
// if _, exists := serviceFuncs[name]; exists {
|
||||
// panic(fmt.Sprintf("node service already exists: %q", name))
|
||||
// }
|
||||
if _, exists := serviceFuncs[name]; exists {
|
||||
panic(fmt.Sprintf("node service already exists: %q", name))
|
||||
}
|
||||
serviceFuncs[name] = f
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ func NewProtocolTester(t *testing.T, id *adapters.NodeId, n int, run func(*p2p.P
|
|||
return []node.Service{newMockNode()}
|
||||
},
|
||||
}
|
||||
adapters.RegisterServices(services)
|
||||
adapter := adapters.NewSimAdapter(services)
|
||||
net := simulations.NewNetwork(adapter, &simulations.NetworkConfig{})
|
||||
if _, err := net.NewNodeWithConfig(&adapters.NodeConfig{Id: id, Service: "test"}); err != nil {
|
||||
|
|
|
|||
Loading…
Reference in a new issue