|
|
|
@ -35,6 +35,16 @@ func (node *Node) setupForShardLeader() { |
|
|
|
|
node.serviceManager.RegisterService(service.Randomness, randomness.New(node.DRand)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) stopShardLeaderServices() { |
|
|
|
|
node.serviceManager.StopService(service.PeerDiscovery) |
|
|
|
|
node.serviceManager.StopService(service.NetworkInfo) |
|
|
|
|
node.serviceManager.StopService(service.SupportExplorer) |
|
|
|
|
node.serviceManager.StopService(service.Consensus) |
|
|
|
|
node.serviceManager.StopService(service.BlockProposal) |
|
|
|
|
node.serviceManager.StopService(service.ClientSupport) |
|
|
|
|
node.serviceManager.StopService(service.Randomness) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) setupForShardValidator() { |
|
|
|
|
nodeConfig, chanPeer := node.initNodeConfiguration() |
|
|
|
|
|
|
|
|
@ -44,6 +54,11 @@ func (node *Node) setupForShardValidator() { |
|
|
|
|
node.serviceManager.RegisterService(service.NetworkInfo, networkinfo.New(node.host, p2p.GroupIDBeacon, chanPeer, nil)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) stopShardValidatorServices() { |
|
|
|
|
node.serviceManager.StopService(service.PeerDiscovery) |
|
|
|
|
node.serviceManager.StopService(service.NetworkInfo) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) setupForBeaconLeader() { |
|
|
|
|
nodeConfig, chanPeer := node.initBeaconNodeConfiguration() |
|
|
|
|
|
|
|
|
@ -61,6 +76,15 @@ func (node *Node) setupForBeaconLeader() { |
|
|
|
|
node.serviceManager.RegisterService(service.Randomness, randomness.New(node.DRand)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) stopBeaconLeaderServices() { |
|
|
|
|
node.serviceManager.StopService(service.PeerDiscovery) |
|
|
|
|
node.serviceManager.StopService(service.NetworkInfo) |
|
|
|
|
node.serviceManager.StopService(service.Consensus) |
|
|
|
|
node.serviceManager.StopService(service.BlockProposal) |
|
|
|
|
node.serviceManager.StopService(service.ClientSupport) |
|
|
|
|
node.serviceManager.StopService(service.Randomness) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) setupForBeaconValidator() { |
|
|
|
|
nodeConfig, chanPeer := node.initBeaconNodeConfiguration() |
|
|
|
|
|
|
|
|
@ -70,6 +94,11 @@ func (node *Node) setupForBeaconValidator() { |
|
|
|
|
node.serviceManager.RegisterService(service.NetworkInfo, networkinfo.New(node.host, p2p.GroupIDBeacon, chanPeer, nil)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) stopBeaconValidatorServices() { |
|
|
|
|
node.serviceManager.StopService(service.PeerDiscovery) |
|
|
|
|
node.serviceManager.StopService(service.NetworkInfo) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) setupForNewNode() { |
|
|
|
|
nodeConfig, chanPeer := node.initNodeConfiguration() |
|
|
|
|
|
|
|
|
@ -83,6 +112,12 @@ func (node *Node) setupForNewNode() { |
|
|
|
|
// TODO: how to restart networkinfo and discovery service after receiving shard id info from beacon chain?
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) stopNewNodeServices() { |
|
|
|
|
node.serviceManager.StopService(service.PeerDiscovery) |
|
|
|
|
node.serviceManager.StopService(service.NetworkInfo) |
|
|
|
|
node.serviceManager.StopService(service.Staking) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) setupForClientNode() { |
|
|
|
|
nodeConfig, chanPeer := node.initNodeConfiguration() |
|
|
|
|
|
|
|
|
@ -92,6 +127,11 @@ func (node *Node) setupForClientNode() { |
|
|
|
|
node.serviceManager.RegisterService(service.NetworkInfo, networkinfo.New(node.host, p2p.GroupIDBeacon, chanPeer, nil)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) stopClientNodeServices() { |
|
|
|
|
node.serviceManager.StopService(service.PeerDiscovery) |
|
|
|
|
node.serviceManager.StopService(service.NetworkInfo) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// ServiceManagerSetup setups service store.
|
|
|
|
|
func (node *Node) ServiceManagerSetup() { |
|
|
|
|
node.serviceManager = &service.Manager{} |
|
|
|
@ -121,3 +161,20 @@ func (node *Node) RunServices() { |
|
|
|
|
} |
|
|
|
|
node.serviceManager.RunServices() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (node *Node) StopServicesByRole(role Role) { |
|
|
|
|
switch role { |
|
|
|
|
case ShardLeader: |
|
|
|
|
node.stopShardLeaderServices() |
|
|
|
|
case ShardValidator: |
|
|
|
|
node.stopShardValidatorServices() |
|
|
|
|
case BeaconLeader: |
|
|
|
|
node.stopBeaconLeaderServices() |
|
|
|
|
case BeaconValidator: |
|
|
|
|
node.stopBeaconValidatorServices() |
|
|
|
|
case NewNode: |
|
|
|
|
node.stopNewNodeServices() |
|
|
|
|
case ClientNode: |
|
|
|
|
node.stopClientNodeServices() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|