Patch for concurrent iterator & others (onto v1.11.6) #386
@ -34,16 +34,20 @@ type testIter struct {
|
||||
}
|
||||
|
||||
func (i *testIter) Next() bool {
|
||||
i.waitCh <- struct{}{}
|
||||
if _, ok := <-i.waitCh; !ok {
|
||||
return false
|
||||
}
|
||||
i.node = <-i.nodeCh
|
||||
return i.node != nil
|
||||
return true
|
||||
}
|
||||
|
||||
func (i *testIter) Node() *enode.Node {
|
||||
return i.node
|
||||
}
|
||||
|
||||
func (i *testIter) Close() {}
|
||||
func (i *testIter) Close() {
|
||||
close(i.waitCh)
|
||||
}
|
||||
|
||||
func (i *testIter) push() {
|
||||
var id enode.ID
|
||||
@ -53,7 +57,7 @@ func (i *testIter) push() {
|
||||
|
||||
func (i *testIter) waiting(timeout time.Duration) bool {
|
||||
select {
|
||||
case <-i.waitCh:
|
||||
case i.waitCh <- struct{}{}:
|
||||
return true
|
||||
case <-time.After(timeout):
|
||||
return false
|
||||
|
Loading…
Reference in New Issue
Block a user