eth/backend_mining_pow.go — Version Comparison
|
v1.16.8 |
v1.17.3 |
| Branch |
etc/v1.16.8-full-node |
etc/v1.17.3-full-node |
| Delta |
+158 -0 |
+149 -0 |
Diff between branches
diff --git a/eth/backend_mining_pow.go b/eth/backend_mining_pow.go
index 765b1c0b3..b32e72cd1 100644
--- a/eth/backend_mining_pow.go
+++ b/eth/backend_mining_pow.go
@@ -107,48 +107,39 @@ func (s *Ethereum) SetEtherbase(addr common.Address) {
// This is placed in the eth package (instead of miner) to avoid an import cycle
// between miner and eth/downloader.
func (s *Ethereum) minerUpdate() {
- events := s.eventMux.Subscribe(downloader.StartEvent{}, downloader.DoneEvent{}, downloader.FailedEvent{})
- defer func() {
- if !events.Closed() {
- events.Unsubscribe()
- }
- }()
+ eventCh := make(chan downloader.SyncEvent, 16)
+ sub := s.handler.downloader.SubscribeSyncEvents(eventCh)
+ defer sub.Unsubscribe()
shouldStart := false
- dlEventCh := events.Chan()
-
for {
select {
- case ev := <-dlEventCh:
- if ev == nil {
- dlEventCh = nil
- continue
- }
- switch ev.Data.(type) {
- case downloader.StartEvent:
+ case ev := <-eventCh:
+ switch ev.Type {
+ case downloader.SyncStarted:
if s.IsMining() {
s.miner.StopMining()
shouldStart = true
}
s.miner.SetSyncing(true)
- case downloader.FailedEvent:
+ case downloader.SyncFailed:
if shouldStart {
s.miner.StartMining()
}
s.miner.SetSyncing(false)
// Stop reacting to downloader events (one-shot security measure)
- events.Unsubscribe()
- dlEventCh = nil
+ sub.Unsubscribe()
+ eventCh = nil
- case downloader.DoneEvent:
+ case downloader.SyncCompleted:
if shouldStart {
s.miner.StartMining()
}
s.miner.SetSyncing(false)
// Stop reacting to downloader events (one-shot security measure)
- events.Unsubscribe()
- dlEventCh = nil
+ sub.Unsubscribe()
+ eventCh = nil
}
case <-s.miner.ExitCh():
← Back to Version Comparison