From bba796bc62f565cb436cd2dd1681bba67f6d2300 Mon Sep 17 00:00:00 2001 From: Ferenc Szabo Date: Fri, 14 Dec 2018 14:15:37 +0100 Subject: [PATCH] p2p/simulations: unexport getUpNodeIDs() and getDownNodeIDs() As they are only used in the same package. --- p2p/simulations/connect.go | 10 +++---- p2p/simulations/network.go | 56 ++++++++++++++++++-------------------- 2 files changed, 31 insertions(+), 35 deletions(-) diff --git a/p2p/simulations/connect.go b/p2p/simulations/connect.go index 4bfcd372b4..bbbb807e9d 100644 --- a/p2p/simulations/connect.go +++ b/p2p/simulations/connect.go @@ -45,7 +45,7 @@ func (net *Network) ConnectToPivotNode(id enode.ID) (err error) { // It is useful when constructing a chain network topology // when Network adds and removes nodes dynamically. func (net *Network) ConnectToLastNode(id enode.ID) (err error) { - ids := net.GetUpNodeIDs() + ids := net.getUpNodeIDs() l := len(ids) if l < 2 { return nil @@ -73,7 +73,7 @@ func (net *Network) ConnectToRandomNode(id enode.ID) (err error) { // which should be rarely needed. func (net *Network) ConnectNodesFull(ids []enode.ID) (err error) { if ids == nil { - ids = net.GetUpNodeIDs() + ids = net.getUpNodeIDs() } l := len(ids) for i := 0; i < l; i++ { @@ -91,7 +91,7 @@ func (net *Network) ConnectNodesFull(ids []enode.ID) (err error) { // If ids argument is nil, all nodes that are up will be connected. func (net *Network) ConnectNodesChain(ids []enode.ID) (err error) { if ids == nil { - ids = net.GetUpNodeIDs() + ids = net.getUpNodeIDs() } l := len(ids) for i := 0; i < l-1; i++ { @@ -107,7 +107,7 @@ func (net *Network) ConnectNodesChain(ids []enode.ID) (err error) { // If ids argument is nil, all nodes that are up will be connected. func (net *Network) ConnectNodesRing(ids []enode.ID) (err error) { if ids == nil { - ids = net.GetUpNodeIDs() + ids = net.getUpNodeIDs() } l := len(ids) if l < 2 { @@ -127,7 +127,7 @@ func (net *Network) ConnectNodesRing(ids []enode.ID) (err error) { // If ids argument is nil, all nodes that are up will be connected. func (net *Network) ConnectNodesStar(id enode.ID, ids []enode.ID) (err error) { if ids == nil { - ids = net.GetUpNodeIDs() + ids = net.getUpNodeIDs() } l := len(ids) for i := 0; i < l; i++ { diff --git a/p2p/simulations/network.go b/p2p/simulations/network.go index ccec14a47a..9e6e6c8763 100644 --- a/p2p/simulations/network.go +++ b/p2p/simulations/network.go @@ -386,6 +386,15 @@ func (net *Network) GetNodeByName(name string) *Node { return net.getNodeByName(name) } +func (net *Network) getNodeByName(name string) *Node { + for _, node := range net.Nodes { + if node.Config.Name == name { + return node + } + } + return nil +} + // GetNodes returns the existing nodes func (net *Network) GetNodes() (nodes []*Node) { net.lock.Lock() @@ -395,19 +404,6 @@ func (net *Network) GetNodes() (nodes []*Node) { return nodes } -// GetUpNodeIDs returns NodeIDs for nodes that are up in the network. -func (net *Network) GetUpNodeIDs() (ids []enode.ID) { - net.lock.Lock() - defer net.lock.Unlock() - - for _, node := range net.Nodes { - if node.Up { - ids = append(ids, node.ID()) - } - } - return ids -} - func (net *Network) getNode(id enode.ID) *Node { i, found := net.nodeMap[id] if !found { @@ -416,30 +412,31 @@ func (net *Network) getNode(id enode.ID) *Node { return net.Nodes[i] } -func (net *Network) getNodeByName(name string) *Node { +// GetRandomUpNode returns a random node on the network, which is running. +func (net *Network) GetRandomUpNode(excludeIDs ...enode.ID) *Node { + net.lock.RLock() + defer net.lock.RUnlock() + return net.getRandomNode(net.getUpNodeIDs(), excludeIDs) +} + +func (net *Network) getUpNodeIDs() (ids []enode.ID) { for _, node := range net.Nodes { - if node.Config.Name == name { - return node + if node.Up { + ids = append(ids, node.ID()) } } - return nil + return ids } -// GetRandomUpNode returns a random SimNode that is up. -// Arguments are NodeIDs for nodes that should not be returned. -func (net *Network) GetRandomUpNode(excludeIDs ...enode.ID) *Node { - return net.getRandomNode(net.GetUpNodeIDs(), excludeIDs) -} - -// GetRandomDownNode returns a random SimNode that is not up. +// GetRandomDownNode returns a random node on the network, which is stopped. func (net *Network) GetRandomDownNode(excludeIDs ...enode.ID) *Node { - return net.getRandomNode(net.GetDownNodeIDs(), excludeIDs) + net.lock.RLock() + defer net.lock.RUnlock() + return net.getRandomNode(net.getDownNodeIDs(), excludeIDs) } -// GetDownNodeIDs returns NodeIDs for nodes that are stopped in the network. -func (net *Network) GetDownNodeIDs() (ids []enode.ID) { - nodes := net.GetNodes() - for _, node := range nodes { +func (net *Network) getDownNodeIDs() (ids []enode.ID) { + for _, node := range net.GetNodes() { if !node.Up { ids = append(ids, node.ID()) } @@ -447,7 +444,6 @@ func (net *Network) GetDownNodeIDs() (ids []enode.ID) { return ids } -// getRandomNode returns a random SimNode from the slice of NodeIDs. func (net *Network) getRandomNode(ids []enode.ID, excludeIDs []enode.ID) *Node { filtered := filterIDs(ids, excludeIDs)