Patch for concurrent iterator & others (onto v1.11.6) #386

Closed
roysc wants to merge 1565 commits from v1.11.6-statediff-v5 into master
Showing only changes of commit 7033724522 - Show all commits

View File

@ -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