@@ -13,21 +13,23 @@ import (
1313 "fmt"
1414 "io"
1515
16+ "slices"
17+
1618 "github.com/ethereum/go-ethereum"
1719 "github.com/ethereum/go-ethereum/core/types"
1820 archive "github.com/ethersphere/batch-archive"
1921 "github.com/ethersphere/bee/v2/pkg/log"
2022)
2123
22- type SnapshotBlockHeightContractFilterer struct {
24+ type SnapshotLogFilterer struct {
2325 logger log.Logger
2426 loadedLogs []types.Log
2527 maxBlockHeight uint64
2628 isLoaded bool
2729}
2830
29- func NewSnapshotBlockHeightContractFilterer (logger log.Logger ) (* SnapshotBlockHeightContractFilterer , error ) {
30- f := & SnapshotBlockHeightContractFilterer {
31+ func NewSnapshotLogFilterer (logger log.Logger ) (* SnapshotLogFilterer , error ) {
32+ f := & SnapshotLogFilterer {
3133 logger : logger ,
3234 }
3335
@@ -38,7 +40,7 @@ func NewSnapshotBlockHeightContractFilterer(logger log.Logger) (*SnapshotBlockHe
3840 return f , nil
3941}
4042
41- func (f * SnapshotBlockHeightContractFilterer ) loadAndProcessSnapshot () error {
43+ func (f * SnapshotLogFilterer ) loadAndProcessSnapshot () error {
4244 f .logger .Info ("loading batch snapshot during construction" )
4345 data := archive .GetBatchSnapshot (true )
4446
@@ -60,7 +62,7 @@ func (f *SnapshotBlockHeightContractFilterer) loadAndProcessSnapshot() error {
6062 return nil
6163}
6264
63- func (f * SnapshotBlockHeightContractFilterer ) parseLogs (reader io.Reader ) error {
65+ func (f * SnapshotLogFilterer ) parseLogs (reader io.Reader ) error {
6466 var parsedLogs []types.Log
6567 var currentMaxBlockHeight uint64
6668 scanner := bufio .NewScanner (reader )
@@ -93,7 +95,7 @@ func (f *SnapshotBlockHeightContractFilterer) parseLogs(reader io.Reader) error
9395 return nil
9496}
9597
96- func (f * SnapshotBlockHeightContractFilterer ) FilterLogs (ctx context.Context , query ethereum.FilterQuery ) ([]types.Log , error ) {
98+ func (f * SnapshotLogFilterer ) FilterLogs (ctx context.Context , query ethereum.FilterQuery ) ([]types.Log , error ) {
9799 f .logger .Debug ("filtering pre-loaded logs" , "total_logs" , len (f .loadedLogs ), "query" , query )
98100
99101 filtered := make ([]types.Log , 0 , len (f .loadedLogs ))
@@ -107,13 +109,7 @@ func (f *SnapshotBlockHeightContractFilterer) FilterLogs(ctx context.Context, qu
107109 }
108110
109111 if len (query .Addresses ) > 0 {
110- addressMatch := false
111- for _ , addr := range query .Addresses {
112- if log .Address == addr {
113- addressMatch = true
114- break
115- }
116- }
112+ addressMatch := slices .Contains (query .Addresses , log .Address )
117113 if ! addressMatch {
118114 continue
119115 }
@@ -132,13 +128,7 @@ func (f *SnapshotBlockHeightContractFilterer) FilterLogs(ctx context.Context, qu
132128 break
133129 }
134130
135- hasMatch := false
136- for _ , topic := range query .Topics [i ] {
137- if log .Topics [i ] == topic {
138- hasMatch = true
139- break
140- }
141- }
131+ hasMatch := slices .Contains (query .Topics [i ], log .Topics [i ])
142132
143133 if ! hasMatch {
144134 topicMatch = false
@@ -158,6 +148,6 @@ func (f *SnapshotBlockHeightContractFilterer) FilterLogs(ctx context.Context, qu
158148 return filtered , nil
159149}
160150
161- func (f * SnapshotBlockHeightContractFilterer ) BlockNumber (_ context.Context ) (uint64 , error ) {
151+ func (f * SnapshotLogFilterer ) BlockNumber (_ context.Context ) (uint64 , error ) {
162152 return f .maxBlockHeight , nil
163153}
0 commit comments