diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-11-21 03:47:09 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-11-21 03:47:09 +0800 |
commit | 71475d3ceafd8f1a4a76d1e5b49ff0d186bacd9b (patch) | |
tree | af69b9b067a83d580e6e6d73f9ff42aed37f3354 /packages/0x.js/src/order_watcher/expiration_watcher.ts | |
parent | a613c3b7e7654728cb56cceb67566ab75313e16f (diff) | |
download | dexon-sol-tools-71475d3ceafd8f1a4a76d1e5b49ff0d186bacd9b.tar.gz dexon-sol-tools-71475d3ceafd8f1a4a76d1e5b49ff0d186bacd9b.tar.zst dexon-sol-tools-71475d3ceafd8f1a4a76d1e5b49ff0d186bacd9b.zip |
Add expirationMarginMs
Diffstat (limited to 'packages/0x.js/src/order_watcher/expiration_watcher.ts')
-rw-r--r-- | packages/0x.js/src/order_watcher/expiration_watcher.ts | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/packages/0x.js/src/order_watcher/expiration_watcher.ts b/packages/0x.js/src/order_watcher/expiration_watcher.ts index cf0222e3c..71199e75f 100644 --- a/packages/0x.js/src/order_watcher/expiration_watcher.ts +++ b/packages/0x.js/src/order_watcher/expiration_watcher.ts @@ -6,6 +6,7 @@ import {SignedOrder, ZeroExError} from '../types'; import {Heap} from '../utils/heap'; import {ZeroEx} from '../0x'; +const DEFAULT_EXPIRATION_MARGIN_MS = 0; const DEFAULT_ORDER_EXPIRATION_CHECKING_INTERVAL_MS = 50; /** @@ -17,9 +18,13 @@ export class ExpirationWatcher { private expiration: {[orderHash: string]: BigNumber} = {}; private callbackIfExists?: (orderHash: string) => void; private orderExpirationCheckingIntervalMs: number; + private expirationMarginMs: number; private orderExpirationCheckingIntervalIdIfExists?: NodeJS.Timer; - constructor(orderExpirationCheckingIntervalMsIfExists?: number) { - this.orderExpirationCheckingIntervalMs = orderExpirationCheckingIntervalMsIfExists || + constructor(expirationMarginIfExistsMs?: number, + orderExpirationCheckingIntervalIfExistsMs?: number) { + this.expirationMarginMs = expirationMarginIfExistsMs || + DEFAULT_ORDER_EXPIRATION_CHECKING_INTERVAL_MS; + this.orderExpirationCheckingIntervalMs = expirationMarginIfExistsMs || DEFAULT_ORDER_EXPIRATION_CHECKING_INTERVAL_MS; const scoreFunction = (orderHash: string) => this.expiration[orderHash].toNumber(); this.orderHashHeapByExpiration = new Heap(scoreFunction); @@ -41,17 +46,19 @@ export class ExpirationWatcher { delete this.callbackIfExists; delete this.orderExpirationCheckingIntervalIdIfExists; } - public addOrder(orderHash: string, expirationUnixTimestampSec: BigNumber): void { - this.expiration[orderHash] = expirationUnixTimestampSec; + public addOrder(orderHash: string, expirationUnixTimestampMs: BigNumber): void { + this.expiration[orderHash] = expirationUnixTimestampMs; // We don't remove hashes from the heap on order remove because it's slow (linear). // We just skip them later if the order was already removed from the order watcher. this.orderHashHeapByExpiration.push(orderHash); } private pruneExpiredOrders(): void { - const currentUnixTimestampSec = utils.getCurrentUnixTimestamp(); + const currentUnixTimestampMs = utils.getCurrentUnixTimestampMs(); while ( this.orderHashHeapByExpiration.size() !== 0 && - this.expiration[this.orderHashHeapByExpiration.head()].lessThan(currentUnixTimestampSec) && + this.expiration[this.orderHashHeapByExpiration.head()].lessThan( + currentUnixTimestampMs.plus(this.expirationMarginMs), + ) && !_.isUndefined(this.callbackIfExists) ) { const orderHash = this.orderHashHeapByExpiration.pop(); |