|
|
|
@ -533,9 +533,11 @@ func (f *faucet) loop() { |
|
|
|
|
} |
|
|
|
|
defer sub.Unsubscribe() |
|
|
|
|
|
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case head := <-heads: |
|
|
|
|
// Start a goroutine to update the state from head notifications in the background
|
|
|
|
|
update := make(chan *types.Header) |
|
|
|
|
|
|
|
|
|
go func() { |
|
|
|
|
for head := range update { |
|
|
|
|
// New chain head arrived, query the current stats and stream to clients
|
|
|
|
|
var ( |
|
|
|
|
balance *big.Int |
|
|
|
@ -588,6 +590,17 @@ func (f *faucet) loop() { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
f.lock.RUnlock() |
|
|
|
|
} |
|
|
|
|
}() |
|
|
|
|
// Wait for various events and assing to the appropriate background threads
|
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case head := <-heads: |
|
|
|
|
// New head arrived, send if for state update if there's none running
|
|
|
|
|
select { |
|
|
|
|
case update <- head: |
|
|
|
|
default: |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
case <-f.update: |
|
|
|
|
// Pending requests updated, stream to clients
|
|
|
|
|