@@ -33,7 +33,7 @@ type baseDEX[Event any, Contract any, EventIterator dexEventIterator] struct {
33
33
34
34
// Hooks
35
35
postStart func (* baseDEX [Event , Contract , EventIterator ]) error
36
- getPool func (Market ) ([]* dexPool [Event , EventIterator ], error )
36
+ getPool func (context. Context , Market ) ([]* dexPool [Event , EventIterator ], error )
37
37
parse func (* Event , * dexPool [Event , EventIterator ]) (TradeEvent , error )
38
38
derefIter func (EventIterator ) * Event
39
39
@@ -71,7 +71,7 @@ type baseDexConfig[Event any, Contract any, EventIterator dexEventIterator] stru
71
71
72
72
// Hooks
73
73
PostStartHook func (* baseDEX [Event , Contract , EventIterator ]) error
74
- PoolGetter func (Market ) ([]* dexPool [Event , EventIterator ], error )
74
+ PoolGetter func (context. Context , Market ) ([]* dexPool [Event , EventIterator ], error )
75
75
EventParser func (* Event , * dexPool [Event , EventIterator ]) (TradeEvent , error )
76
76
IterDeref func (EventIterator ) * Event
77
77
@@ -239,6 +239,8 @@ func (b *baseDEX[Event, Contract, EventIterator]) Stop() error {
239
239
}
240
240
241
241
func (b * baseDEX [Event , Contract , EventIterator ]) Subscribe (market Market ) error {
242
+ ctx := context .TODO ()
243
+
242
244
if ! b .once .Subscribe () {
243
245
return ErrNotStarted
244
246
}
@@ -253,7 +255,7 @@ func (b *baseDEX[Event, Contract, EventIterator]) Subscribe(market Market) error
253
255
254
256
for _ , mappedToken := range mappings {
255
257
market := NewMarketWithMainQuote (market .Base (), mappedToken , market .Quote ())
256
- if err := debounce .Debounce (b .logger , func () error { return b .Subscribe (market ) }); err != nil {
258
+ if err := debounce .Debounce (ctx , b .logger , func (_ context. Context ) error { return b .Subscribe (market ) }); err != nil {
257
259
b .logger .Errorf ("failed to subscribe to market %s: %s" , market , err )
258
260
mappingErr = err
259
261
}
@@ -277,7 +279,7 @@ func (b *baseDEX[Event, Contract, EventIterator]) Subscribe(market Market) error
277
279
return fmt .Errorf ("%w: %s" , ErrMarketDisabled , market )
278
280
}
279
281
280
- pools , err := b .getPool (market )
282
+ pools , err := b .getPool (ctx , market )
281
283
if err != nil {
282
284
return fmt .Errorf ("failed to get pool for market %s: %s" , market .StringWithoutMain (), err )
283
285
}
@@ -304,8 +306,8 @@ func (b *baseDEX[Event, Contract, EventIterator]) subscribePool(pool *dexPool[Ev
304
306
305
307
var sub event.Subscription
306
308
var err error
307
- err = debounce .Debounce (b .logger , func () error {
308
- opts := & bind.WatchOpts {Context : watchCtx }
309
+ err = debounce .Debounce (watchCtx , b .logger , func (ctx context. Context ) error {
310
+ opts := & bind.WatchOpts {Context : ctx }
309
311
sub , err = pool .Contract .WatchSwap (opts , sink , []common.Address {}, []common.Address {})
310
312
return err
311
313
})
@@ -357,7 +359,7 @@ func (b *baseDEX[Event, Contract, EventIterator]) HistoricalData(ctx context.Con
357
359
if strings .ToLower (market .Quote ()) == "usd" {
358
360
m = NewMarket (market .Base (), market .Quote ()+ "t" ) // convert USD quote to USDT
359
361
}
360
- pools , err := b .getPool (m )
362
+ pools , err := b .getPool (ctx , m )
361
363
if err != nil {
362
364
return nil , fmt .Errorf ("failed to get pool for market %s: %w" , m , err )
363
365
}
@@ -373,7 +375,7 @@ func (b *baseDEX[Event, Contract, EventIterator]) HistoricalData(ctx context.Con
373
375
for i , pool := range pools {
374
376
var iter EventIterator
375
377
376
- err = debounce .Debounce (b .logger , func () error {
378
+ err = debounce .Debounce (ctx , b .logger , func (ctx context. Context ) error {
377
379
opts := & bind.FilterOpts {Start : block .Uint64 (), Context : ctx }
378
380
iter , err = pool .Contract .FilterSwap (opts , nil , nil )
379
381
return err
@@ -426,7 +428,7 @@ func (b *baseDEX[Event, Contract, EventIterator]) findBlockByTimestamp(
426
428
427
429
var header * types.Header
428
430
var err error
429
- err = debounce .Debounce (b .logger , func () error {
431
+ err = debounce .Debounce (ctx , b .logger , func (ctx context. Context ) error {
430
432
header , err = client .HeaderByNumber (ctx , nil )
431
433
return err
432
434
})
@@ -442,7 +444,7 @@ func (b *baseDEX[Event, Contract, EventIterator]) findBlockByTimestamp(
442
444
mid := new (big.Int ).Add (low , high )
443
445
mid .Div (mid , big .NewInt (2 ))
444
446
445
- err = debounce .Debounce (b .logger , func () error {
447
+ err = debounce .Debounce (ctx , b .logger , func (ctx context. Context ) error {
446
448
header , err = client .HeaderByNumber (ctx , mid )
447
449
return err
448
450
})
0 commit comments