aboutsummaryrefslogtreecommitdiffstats
path: root/src/contract_wrappers/exchange_wrapper.ts
diff options
context:
space:
mode:
authorJacob Evans <jacob@dekz.net>2017-11-12 00:01:59 +0800
committerJacob Evans <jacob@dekz.net>2017-11-12 00:01:59 +0800
commit4ae9482d506ccdf028fcd39bbaf652bbcbef52e8 (patch)
tree3b133b11e8074a75ceafe006b6166a41022a634a /src/contract_wrappers/exchange_wrapper.ts
parent4262ac3c8966468b343c6467e0e9da85ef25be05 (diff)
downloaddexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar
dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.gz
dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.bz2
dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.lz
dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.xz
dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.tar.zst
dexon-0x-contracts-4ae9482d506ccdf028fcd39bbaf652bbcbef52e8.zip
Clean up subscription state.
In the case of an exception, keep the state correct between contract wrapper, exchange wrapper and token wrapper.
Diffstat (limited to 'src/contract_wrappers/exchange_wrapper.ts')
-rw-r--r--src/contract_wrappers/exchange_wrapper.ts18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/contract_wrappers/exchange_wrapper.ts b/src/contract_wrappers/exchange_wrapper.ts
index b8704e72c..4fd2b23a8 100644
--- a/src/contract_wrappers/exchange_wrapper.ts
+++ b/src/contract_wrappers/exchange_wrapper.ts
@@ -49,7 +49,6 @@ const SHOULD_VALIDATE_BY_DEFAULT = true;
*/
export class ExchangeWrapper extends ContractWrapper {
private _exchangeContractIfExists?: ExchangeContract;
- private _activeSubscriptions: string[];
private _orderValidationUtils: OrderValidationUtils;
private _tokenWrapper: TokenWrapper;
private _exchangeContractErrCodesToMsg = {
@@ -84,7 +83,6 @@ export class ExchangeWrapper extends ContractWrapper {
super(web3Wrapper, abiDecoder);
this._tokenWrapper = tokenWrapper;
this._orderValidationUtils = new OrderValidationUtils(tokenWrapper, this);
- this._activeSubscriptions = [];
this._contractAddressIfExists = contractAddressIfExists;
}
/**
@@ -666,7 +664,6 @@ export class ExchangeWrapper extends ContractWrapper {
const subscriptionToken = this._subscribe<ArgsType>(
exchangeContractAddress, eventName, indexFilterValues, artifacts.ExchangeArtifact.abi, callback,
);
- this._activeSubscriptions.push(subscriptionToken);
return subscriptionToken;
}
/**
@@ -674,10 +671,15 @@ export class ExchangeWrapper extends ContractWrapper {
* @param subscriptionToken Subscription token returned by `subscribe()`
*/
public unsubscribe(subscriptionToken: string): void {
- _.pull(this._activeSubscriptions, subscriptionToken);
this._unsubscribe(subscriptionToken);
}
/**
+ * Cancels all existing subscriptions
+ */
+ public unsubscribeAll(): void {
+ super.unsubscribeAll();
+ }
+ /**
* Gets historical logs without creating a subscription
* @param eventName The exchange contract event you would like to subscribe to.
* @param subscriptionOpts Subscriptions options that let you configure the subscription.
@@ -825,13 +827,7 @@ export class ExchangeWrapper extends ContractWrapper {
const ZRXtokenAddress = await exchangeInstance.ZRX_TOKEN_CONTRACT.callAsync();
return ZRXtokenAddress;
}
- /**
- * Cancels all existing subscriptions
- */
- public unsubscribeAll(): void {
- _.forEach(this._activeSubscriptions, this._unsubscribe.bind(this));
- this._activeSubscriptions = [];
- }
+
private async _invalidateContractInstancesAsync(): Promise<void> {
this.unsubscribeAll();
delete this._exchangeContractIfExists;