mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 06:36:43 +00:00
p2p/enode: closed channel not needed in bufferIter
Signed-off-by: Csaba Kiraly <csaba.kiraly@gmail.com>
This commit is contained in:
parent
c29688a255
commit
2a9b0605ee
1 changed files with 2 additions and 14 deletions
|
|
@ -238,7 +238,6 @@ type BufferIter struct {
|
||||||
it Iterator
|
it Iterator
|
||||||
buffer chan *Node
|
buffer chan *Node
|
||||||
head *Node
|
head *Node
|
||||||
closed chan struct{}
|
|
||||||
closeOnce sync.Once
|
closeOnce sync.Once
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -247,8 +246,6 @@ func NewBufferIter(it Iterator, size int) Iterator {
|
||||||
b := BufferIter{
|
b := BufferIter{
|
||||||
it: it,
|
it: it,
|
||||||
buffer: make(chan *Node, size),
|
buffer: make(chan *Node, size),
|
||||||
head: nil,
|
|
||||||
closed: make(chan struct{}),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
|
|
@ -256,22 +253,14 @@ func NewBufferIter(it Iterator, size int) Iterator {
|
||||||
defer close(b.buffer)
|
defer close(b.buffer)
|
||||||
// If instead the bufferIterator is closed, we bail out of the loop.
|
// If instead the bufferIterator is closed, we bail out of the loop.
|
||||||
for b.it.Next() {
|
for b.it.Next() {
|
||||||
select {
|
b.buffer <- b.it.Node()
|
||||||
case b.buffer <- b.it.Node():
|
|
||||||
case <-b.closed:
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
return &b
|
return &b
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *BufferIter) Next() bool {
|
func (b *BufferIter) Next() bool {
|
||||||
select {
|
b.head = <-b.buffer
|
||||||
case b.head = <-b.buffer:
|
|
||||||
case <-b.closed:
|
|
||||||
b.head = nil
|
|
||||||
}
|
|
||||||
return b.head != nil
|
return b.head != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -282,7 +271,6 @@ func (b *BufferIter) Node() *Node {
|
||||||
func (b *BufferIter) Close() {
|
func (b *BufferIter) Close() {
|
||||||
b.closeOnce.Do(func() {
|
b.closeOnce.Do(func() {
|
||||||
b.it.Close()
|
b.it.Close()
|
||||||
close(b.closed)
|
|
||||||
// Wait for Next to terminate.
|
// Wait for Next to terminate.
|
||||||
for range b.buffer {
|
for range b.buffer {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue