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