diff options
author | Fabio Berger <me@fabioberger.com> | 2017-11-10 07:29:13 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2017-11-10 07:29:13 +0800 |
commit | c0db88168b250ef4db960e9eddced8f5a10ee63f (patch) | |
tree | 6a192dd0688214e08323f40aac119646d5ba2d63 /src/order_watcher/order_state_watcher.ts | |
parent | 595dc6de0360a8d21db78aba81d9cd44bffc6a1c (diff) | |
download | dexon-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/order_state_watcher.ts')
-rw-r--r-- | src/order_watcher/order_state_watcher.ts | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/order_watcher/order_state_watcher.ts b/src/order_watcher/order_state_watcher.ts index 000e92773..fa91d1f44 100644 --- a/src/order_watcher/order_state_watcher.ts +++ b/src/order_watcher/order_state_watcher.ts @@ -22,6 +22,8 @@ import { } from '../types'; import {Web3Wrapper} from '../web3_wrapper'; +const DEFAULT_NUM_CONFIRMATIONS = 0; + interface DependentOrderHashes { [makerAddress: string]: { [makerToken: string]: Set<string>, @@ -40,6 +42,7 @@ export class OrderStateWatcher { private _eventWatcher: EventWatcher; private _abiDecoder: AbiDecoder; private _orderStateUtils: OrderStateUtils; + private _numConfirmations: number; constructor( web3Wrapper: Web3Wrapper, abiDecoder: AbiDecoder, orderStateUtils: OrderStateUtils, config?: OrderStateWatcherConfig, @@ -48,8 +51,11 @@ export class OrderStateWatcher { this._orders = {}; this._dependentOrderHashes = {}; const eventPollingIntervalMs = _.isUndefined(config) ? undefined : config.pollingIntervalMs; + this._numConfirmations = _.isUndefined(config) ? + DEFAULT_NUM_CONFIRMATIONS + : config.numConfirmations; this._eventWatcher = new EventWatcher( - this._web3Wrapper, eventPollingIntervalMs, + this._web3Wrapper, eventPollingIntervalMs, this._numConfirmations, ); this._abiDecoder = abiDecoder; this._orderStateUtils = orderStateUtils; @@ -88,13 +94,13 @@ export class OrderStateWatcher { * is 0 will watch the backing node's mempool, 3 will emit events when blockchain * state relevant to a watched order changed 3 blocks ago. */ - public subscribe(callback: OnOrderStateChangeCallback, numConfirmations: number): void { + public subscribe(callback: OnOrderStateChangeCallback): void { assert.isFunction('callback', callback); if (!_.isUndefined(this._callbackIfExistsAsync)) { throw new Error(ZeroExError.SubscriptionAlreadyPresent); } this._callbackIfExistsAsync = callback; - this._eventWatcher.subscribe(this._onEventWatcherCallbackAsync.bind(this), numConfirmations); + this._eventWatcher.subscribe(this._onEventWatcherCallbackAsync.bind(this)); } /** * Ends an orderStateWatcher subscription. @@ -151,8 +157,11 @@ export class OrderStateWatcher { } } private async _emitRevalidateOrdersAsync(orderHashes: string[]): Promise<void> { + const defaultBlock = this._numConfirmations === 0 ? + BlockParamLiteral.Pending : + this._numConfirmations; const methodOpts = { - defaultBlock: BlockParamLiteral.Pending, + defaultBlock, }; for (const orderHash of orderHashes) { |