aboutsummaryrefslogtreecommitdiffstats
path: root/src/order_watcher/event_watcher.ts
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2017-11-10 07:29:13 +0800
committerFabio Berger <me@fabioberger.com>2017-11-10 07:29:13 +0800
commitc0db88168b250ef4db960e9eddced8f5a10ee63f (patch)
tree6a192dd0688214e08323f40aac119646d5ba2d63 /src/order_watcher/event_watcher.ts
parent595dc6de0360a8d21db78aba81d9cd44bffc6a1c (diff)
downloaddexon-sol-tools-c0db88168b250ef4db960e9eddced8f5a10ee63f.tar
dexon-sol-tools-c0db88168b250ef4db960e9eddced8f5a10ee63f.tar.gz
dexon-sol-tools-c0db88168b250ef4db960e9eddced8f5a10ee63f.tar.bz2
dexon-sol-tools-c0db88168b250ef4db960e9eddced8f5a10ee63f.tar.lz
dexon-sol-tools-c0db88168b250ef4db960e9eddced8f5a10ee63f.tar.xz
dexon-sol-tools-c0db88168b250ef4db960e9eddced8f5a10ee63f.tar.zst
dexon-sol-tools-c0db88168b250ef4db960e9eddced8f5a10ee63f.zip
Fix bug where we hard-coded using pendingBlock for fetching the orderState. Moved numConfirmations to become a global orderStateWatcher config
Diffstat (limited to 'src/order_watcher/event_watcher.ts')
-rw-r--r--src/order_watcher/event_watcher.ts22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/order_watcher/event_watcher.ts b/src/order_watcher/event_watcher.ts
index ce471b58d..f71b14afb 100644
--- a/src/order_watcher/event_watcher.ts
+++ b/src/order_watcher/event_watcher.ts
@@ -13,16 +13,18 @@ export class EventWatcher {
private _intervalId: NodeJS.Timer;
private _lastEvents: Web3.LogEntry[] = [];
private _callbackIfExistsAsync?: EventWatcherCallback;
- constructor(web3Wrapper: Web3Wrapper, pollingIntervalMs: undefined|number) {
+ private _numConfirmations: number;
+ constructor(web3Wrapper: Web3Wrapper, pollingIntervalMs: undefined|number, numConfirmations: number) {
this._web3Wrapper = web3Wrapper;
+ this._numConfirmations = numConfirmations;
this._pollingIntervalMs = _.isUndefined(pollingIntervalMs) ?
DEFAULT_EVENT_POLLING_INTERVAL :
pollingIntervalMs;
}
- public subscribe(callback: EventWatcherCallback, numConfirmations: number): void {
+ public subscribe(callback: EventWatcherCallback): void {
this._callbackIfExistsAsync = callback;
this._intervalId = intervalUtils.setAsyncExcludingInterval(
- this._pollForMempoolEventsAsync.bind(this, numConfirmations), this._pollingIntervalMs,
+ this._pollForMempoolEventsAsync.bind(this), this._pollingIntervalMs,
);
}
public unsubscribe(): void {
@@ -30,8 +32,8 @@ export class EventWatcher {
this._lastEvents = [];
intervalUtils.clearAsyncExcludingInterval(this._intervalId);
}
- private async _pollForMempoolEventsAsync(numConfirmations: number): Promise<void> {
- const pendingEvents = await this._getEventsAsync(numConfirmations);
+ private async _pollForMempoolEventsAsync(): Promise<void> {
+ const pendingEvents = await this._getEventsAsync();
if (pendingEvents.length === 0) {
// HACK: Sometimes when node rebuilds the pending block we get back the empty result.
// We don't want to emit a lot of removal events and bring them back after a couple of miliseconds,
@@ -46,16 +48,16 @@ export class EventWatcher {
await this._emitDifferencesAsync(newEvents, isRemoved);
this._lastEvents = pendingEvents;
}
- private async _getEventsAsync(numConfirmations: number): Promise<Web3.LogEntry[]> {
+ private async _getEventsAsync(): Promise<Web3.LogEntry[]> {
let fromBlock: BlockParamLiteral|number;
let toBlock: BlockParamLiteral|number;
- if (numConfirmations === 0) {
+ if (this._numConfirmations === 0) {
fromBlock = BlockParamLiteral.Pending;
- toBlock = BlockParamLiteral.Pending;
+ toBlock = fromBlock;
} else {
const currentBlock = await this._web3Wrapper.getBlockNumberAsync();
- toBlock = currentBlock - numConfirmations;
- fromBlock = currentBlock - numConfirmations;
+ toBlock = currentBlock - this._numConfirmations;
+ fromBlock = toBlock;
}
const eventFilter = {
fromBlock,