Skip to content

Commit 29545ed

Browse files
committed
feat(orap&reku): add setLogger
1 parent daf9fd1 commit 29545ed

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

packages/orap/orap.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import type { Providers } from '@ora-io/reku'
22
import { RekuProviderManager } from '@ora-io/reku'
3+
import type { Logger } from '@ora-io/utils'
4+
import { logger } from '@ora-io/utils'
35
import { EventSignal } from './signal/event'
46

57
export interface ListenOptions {
@@ -12,14 +14,16 @@ export class Orap {
1214
event: EventSignal[]
1315
}
1416

17+
logger: Logger = logger
18+
1519
constructor() {
1620
this.routes = {
1721
event: [],
1822
}
1923
}
2024

2125
event(options: any, fn: any) {
22-
const es = new EventSignal(options, fn)
26+
const es = new EventSignal(options, fn, this.logger)
2327
this.routes.event.push(es)
2428
return es
2529
}
@@ -37,4 +41,8 @@ export class Orap {
3741
onListen()
3842
return this
3943
}
44+
45+
setLogger(logger: Logger) {
46+
this.logger = logger
47+
}
4048
}

packages/orap/signal/event.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { EventFragment, Log } from 'ethers'
22
import { ethers } from 'ethers'
33
import { AutoCrossChecker, ONE_MINUTE_MS, RekuProviderManager } from '@ora-io/reku'
44
import type { AutoCrossCheckParam, Providers } from '@ora-io/reku'
5+
import type { Logger } from '@ora-io/utils'
56
import type { Signal } from './type'
67

78
export interface EventSignalRegisterParams {
@@ -28,6 +29,7 @@ export class EventSignal implements Signal {
2829
constructor(
2930
public params: EventSignalRegisterParams,
3031
public callback: EventSignalCallback,
32+
public logger: Logger,
3133
) {
3234
this.contract = new ethers.Contract(
3335
params.address,
@@ -88,6 +90,7 @@ export class EventSignal implements Signal {
8890
if (!this.crosscheckerOptions)
8991
throw new Error('no crosscheck set, can\'t start crosschecker')
9092
this.crosschecker = new AutoCrossChecker(provider, this.crosscheckerOptions)
93+
this.crosschecker.setLogger(this.logger)
9194
await this.crosschecker.start(this.crosscheckerOptions)
9295
}
9396

packages/reku/event/crosschecker/autochecker.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { ethers } from 'ethers'
2-
import { logger, polling, retryOnNull, sleep } from '@ora-io/utils'
2+
import { polling, retryOnNull, sleep } from '@ora-io/utils'
33
import { ETH_BLOCK_INTERVAL_MS } from '../../constants'
44
import type { Providers } from '../../types/w3'
55
import { CrossCheckerCacheManager } from './cache/manager'
@@ -8,7 +8,7 @@ import { BaseCrossChecker } from './basechecker'
88

99
export class AutoCrossChecker extends BaseCrossChecker {
1010
// TODO: make cache self-clean with a MAX cap
11-
cache: CrossCheckerCacheManager = new CrossCheckerCacheManager()
11+
cache: CrossCheckerCacheManager
1212
checkpointBlockNumber = 0
1313

1414
constructor(
@@ -92,10 +92,10 @@ export class AutoCrossChecker extends BaseCrossChecker {
9292
const waitNextCrosscheck = async (): Promise<boolean> => {
9393
// TODO: use blockNumber for performance
9494
const latestblocknum = (await retryOnNull(async () => await this.provider.provider?.getBlock('latest'))).number
95-
logger.info(`[*] ccrOptions: fromBlock ${ccrOptions.fromBlock}, toBlock ${ccrOptions.toBlock}, latestblocknum ${latestblocknum}`)
95+
this.logger.info('[*] ccrOptions: fromBlock', ccrOptions.fromBlock, ', toBlock', ccrOptions.toBlock, ', latestblocknum', latestblocknum)
9696
if (ccrOptions.toBlock + delayBlockFromLatest > latestblocknum) {
9797
// sleep until the toBlock
98-
logger.info(`sleep until the latestblocknum >= toBlock + delayBlockFromLatest, i.e. ${(ccrOptions.toBlock + delayBlockFromLatest - latestblocknum) * blockIntervalMs} ms`)
98+
this.logger.debug('sleep until the latestblocknum >= toBlock + delayBlockFromLatest, i.e.', (ccrOptions.toBlock + delayBlockFromLatest - latestblocknum) * blockIntervalMs, 'ms')
9999
await sleep((ccrOptions.toBlock + delayBlockFromLatest - latestblocknum) * blockIntervalMs)
100100
return false
101101
}

packages/reku/event/crosschecker/basechecker.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import type { ethers } from 'ethers'
2+
import type { Logger } from '@ora-io/utils'
23
import { logger, retryOnNull } from '@ora-io/utils'
34
import { ETH_BLOCK_COUNT_ONE_HOUR } from '../../constants'
45
import type { Providers } from '../../types/w3'
56
import type { CrossCheckFromParam, CrossCheckRangeParam, CrossCheckRetroParam, SimpleLog } from './interface'
67

78
export class BaseCrossChecker {
89
provider: Providers
10+
logger: Logger = logger
911
constructor(provider: Providers) {
1012
this.provider = provider
1113
}
@@ -30,7 +32,7 @@ export class BaseCrossChecker {
3032
const { retroBlockCount } = ccrOptions
3133
// TODO: change to chain rpc based block interval
3234
if (retroBlockCount < ETH_BLOCK_COUNT_ONE_HOUR)
33-
logger.warn('crosscheck retroBlockCount too low, recommend block range >= 1 hour')
35+
this.logger.warn('crosscheck retroBlockCount too low, recommend block range >= 1 hour')
3436

3537
// define from, to
3638
// TODO: use blockNumber for performance
@@ -57,7 +59,7 @@ export class BaseCrossChecker {
5759

5860
// suggest use large retroBlockCount
5961
if (block.number - ccfOptions.fromBlock < ETH_BLOCK_COUNT_ONE_HOUR)
60-
logger.warn('crosscheck retroBlockCount too low, recommend crosscheck interval >= 1 hour')
62+
this.logger.warn('crosscheck retroBlockCount too low, recommend crosscheck interval >= 1 hour')
6163

6264
// define from, to
6365
const options: CrossCheckRangeParam = {
@@ -85,7 +87,7 @@ export class BaseCrossChecker {
8587
const missing = (logToFind: ethers.Log) => {
8688
const logIndex = ignoreLogs.findIndex(
8789
log => log.transactionHash === logToFind.transactionHash
88-
&& (!log.index || log.index === logToFind.index),
90+
&& (!log.index || log.index === logToFind.index),
8991
)
9092

9193
return logIndex === -1
@@ -117,5 +119,9 @@ export class BaseCrossChecker {
117119
await options.onMissingLog(log)
118120
}
119121
}
122+
123+
setLogger(logger: Logger) {
124+
this.logger = logger
125+
}
120126
}
121127

0 commit comments

Comments
 (0)