accounts/abi/bind/v2: simplify EventIterator.Next interface: don't return error

This commit is contained in:
Jared Wasinger 2025-03-07 10:23:04 +01:00
parent 24dbfc82cd
commit 829c3cba34
2 changed files with 11 additions and 19 deletions

View file

@ -106,10 +106,10 @@ func (it *EventIterator[T]) Value() *T {
// If the attempt to convert the raw log object to an instance of T using the // If the attempt to convert the raw log object to an instance of T using the
// unpack function provided via FilterEvents returns an error: that error is // unpack function provided via FilterEvents returns an error: that error is
// returned and subsequent calls to Next will not advance the iterator. // returned and subsequent calls to Next will not advance the iterator.
func (it *EventIterator[T]) Next() (advanced bool, err error) { func (it *EventIterator[T]) Next() (advanced bool) {
// If the iterator failed with an error, don't proceed // If the iterator failed with an error, don't proceed
if it.fail != nil || it.closed { if it.fail != nil || it.closed {
return false, it.fail return false
} }
// if the iterator is still active, block until a log is received or the // if the iterator is still active, block until a log is received or the
// underlying subscription terminates. // underlying subscription terminates.
@ -118,10 +118,10 @@ func (it *EventIterator[T]) Next() (advanced bool, err error) {
res, err := it.unpack(&log) res, err := it.unpack(&log)
if err != nil { if err != nil {
it.fail = err it.fail = err
return false, it.fail return false
} }
it.current = res it.current = res
return true, it.fail return true
case <-it.sub.Err(): case <-it.sub.Err():
// regardless of how the subscription ends, still be able to iterate // regardless of how the subscription ends, still be able to iterate
// over any unread logs. // over any unread logs.
@ -130,12 +130,12 @@ func (it *EventIterator[T]) Next() (advanced bool, err error) {
res, err := it.unpack(&log) res, err := it.unpack(&log)
if err != nil { if err != nil {
it.fail = err it.fail = err
return false, it.fail return false
} }
it.current = res it.current = res
return true, it.fail return true
default: default:
return false, it.fail return false
} }
} }
} }

View file

@ -286,24 +286,16 @@ done:
e1Count = 0 e1Count = 0
e2Count = 0 e2Count = 0
for { for it.Next() {
advanced, err := it.Next() if err := it.Error(); err != nil {
if err != nil {
t.Fatalf("got error while iterating events for e1: %v", err) t.Fatalf("got error while iterating events for e1: %v", err)
} }
if !advanced {
break
}
e1Count++ e1Count++
} }
for { for it2.Next() {
advanced, err := it2.Next() if err := it2.Error(); err != nil {
if err != nil {
t.Fatalf("got error while iterating events for e2: %v", err) t.Fatalf("got error while iterating events for e2: %v", err)
} }
if !advanced {
break
}
e2Count++ e2Count++
} }
if e1Count != 2 { if e1Count != 2 {