make it impossible to run a network node without PeerPool

This commit is contained in:
Zahary Karadjov 2018-12-28 18:44:37 +02:00
parent 99b6b86414
commit 8981d98786

View File

@ -37,7 +37,8 @@ proc newEthereumNode*(keys: KeyPair,
chain: AbstractChainDB, chain: AbstractChainDB,
clientId = "nim-eth-p2p/0.2.0", # TODO: read this value from nimble somehow clientId = "nim-eth-p2p/0.2.0", # TODO: read this value from nimble somehow
addAllCapabilities = true, addAllCapabilities = true,
useCompression: bool = false): EthereumNode = useCompression: bool = false,
minPeers = 10): EthereumNode =
new result new result
result.keys = keys result.keys = keys
result.networkId = networkId result.networkId = networkId
@ -53,6 +54,11 @@ proc newEthereumNode*(keys: KeyPair,
result.protocolStates.newSeq allProtocols.len result.protocolStates.newSeq allProtocols.len
result.peerPool = newPeerPool(result, networkId,
keys, nil,
clientId, address.tcpPort,
minPeers = minPeers)
if addAllCapabilities: if addAllCapabilities:
for p in allProtocols: for p in allProtocols:
result.addCapability(p) result.addCapability(p)
@ -88,19 +94,14 @@ proc startListening*(node: EthereumNode) =
proc connectToNetwork*(node: EthereumNode, proc connectToNetwork*(node: EthereumNode,
bootstrapNodes: seq[ENode], bootstrapNodes: seq[ENode],
startListening = true, startListening = true,
enableDiscovery = true, enableDiscovery = true) {.async.} =
minPeers = 10) {.async.} =
assert node.connectionState == ConnectionState.None assert node.connectionState == ConnectionState.None
node.connectionState = Connecting node.connectionState = Connecting
node.discovery = newDiscoveryProtocol(node.keys.seckey, node.discovery = newDiscoveryProtocol(node.keys.seckey,
node.address, node.address,
bootstrapNodes) bootstrapNodes)
node.peerPool.discovery = node.discovery
node.peerPool = newPeerPool(node, node.networkId,
node.keys, node.discovery,
node.clientId, node.address.tcpPort,
minPeers = minPeers)
if startListening: if startListening:
eth_p2p.startListening(node) eth_p2p.startListening(node)