Check if callback exists
This commit is contained in:
parent
b01a4af99e
commit
3bc3666215
@ -29,12 +29,12 @@ export class ExpirationWatcher {
|
|||||||
const comparator = (lhs: string, rhs: string) => scoreFunction(lhs) - scoreFunction(rhs);
|
const comparator = (lhs: string, rhs: string) => scoreFunction(lhs) - scoreFunction(rhs);
|
||||||
this.orderHashByExpirationRBTree = new RBTree(comparator);
|
this.orderHashByExpirationRBTree = new RBTree(comparator);
|
||||||
}
|
}
|
||||||
public subscribe(callback: (orderHash: string) => void): void {
|
public subscribe(callbackAsync: (orderHash: string) => Promise<void>): void {
|
||||||
if (!_.isUndefined(this.orderExpirationCheckingIntervalIdIfExists)) {
|
if (!_.isUndefined(this.orderExpirationCheckingIntervalIdIfExists)) {
|
||||||
throw new Error(ZeroExError.SubscriptionAlreadyPresent);
|
throw new Error(ZeroExError.SubscriptionAlreadyPresent);
|
||||||
}
|
}
|
||||||
this.orderExpirationCheckingIntervalIdIfExists = intervalUtils.setAsyncExcludingInterval(
|
this.orderExpirationCheckingIntervalIdIfExists = intervalUtils.setAsyncExcludingInterval(
|
||||||
this.pruneExpiredOrders.bind(this, callback), this.orderExpirationCheckingIntervalMs,
|
this.pruneExpiredOrdersAsync.bind(this, callbackAsync), this.orderExpirationCheckingIntervalMs,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
public unsubscribe(): void {
|
public unsubscribe(): void {
|
||||||
@ -52,7 +52,7 @@ export class ExpirationWatcher {
|
|||||||
this.orderHashByExpirationRBTree.remove(orderHash);
|
this.orderHashByExpirationRBTree.remove(orderHash);
|
||||||
delete this.expiration[orderHash];
|
delete this.expiration[orderHash];
|
||||||
}
|
}
|
||||||
private pruneExpiredOrders(callback: (orderHash: string) => void): void {
|
private async pruneExpiredOrdersAsync(callbackAsync: (orderHash: string) => Promise<void>): Promise<void> {
|
||||||
const currentUnixTimestampMs = utils.getCurrentUnixTimestampMs();
|
const currentUnixTimestampMs = utils.getCurrentUnixTimestampMs();
|
||||||
while (
|
while (
|
||||||
this.orderHashByExpirationRBTree.size !== 0 &&
|
this.orderHashByExpirationRBTree.size !== 0 &&
|
||||||
@ -63,7 +63,7 @@ export class ExpirationWatcher {
|
|||||||
const orderHash = this.orderHashByExpirationRBTree.min();
|
const orderHash = this.orderHashByExpirationRBTree.min();
|
||||||
this.orderHashByExpirationRBTree.remove(orderHash);
|
this.orderHashByExpirationRBTree.remove(orderHash);
|
||||||
delete this.expiration[orderHash];
|
delete this.expiration[orderHash];
|
||||||
callback(orderHash);
|
await callbackAsync(orderHash);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ export class OrderStateWatcher {
|
|||||||
}
|
}
|
||||||
this._callbackIfExists = callback;
|
this._callbackIfExists = callback;
|
||||||
this._eventWatcher.subscribe(this._onEventWatcherCallbackAsync.bind(this));
|
this._eventWatcher.subscribe(this._onEventWatcherCallbackAsync.bind(this));
|
||||||
this._expirationWatcher.subscribe(this._onOrderExpired.bind(this));
|
this._expirationWatcher.subscribe(this._onOrderExpiredAsync.bind(this));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Ends an orderStateWatcher subscription.
|
* Ends an orderStateWatcher subscription.
|
||||||
@ -143,7 +143,7 @@ export class OrderStateWatcher {
|
|||||||
this._eventWatcher.unsubscribe();
|
this._eventWatcher.unsubscribe();
|
||||||
this._expirationWatcher.unsubscribe();
|
this._expirationWatcher.unsubscribe();
|
||||||
}
|
}
|
||||||
private _onOrderExpired(orderHash: string): void {
|
private async _onOrderExpiredAsync(orderHash: string): Promise<void> {
|
||||||
const orderState: OrderState = {
|
const orderState: OrderState = {
|
||||||
isValid: false,
|
isValid: false,
|
||||||
orderHash,
|
orderHash,
|
||||||
@ -151,8 +151,10 @@ export class OrderStateWatcher {
|
|||||||
};
|
};
|
||||||
if (!_.isUndefined(this._orderByOrderHash[orderHash])) {
|
if (!_.isUndefined(this._orderByOrderHash[orderHash])) {
|
||||||
// We need this check because we never remove the orders from expiration watcher
|
// We need this check because we never remove the orders from expiration watcher
|
||||||
this.removeOrder(orderHash);
|
await this.removeOrderAsync(orderHash);
|
||||||
(this._callbackIfExistsAsync as OnOrderStateChangeCallback)(orderState);
|
if (!_.isUndefined(this._callbackIfExists)) {
|
||||||
|
this._callbackIfExists(orderState);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private async _onEventWatcherCallbackAsync(log: LogEvent): Promise<void> {
|
private async _onEventWatcherCallbackAsync(log: LogEvent): Promise<void> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user