diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-11-10 04:44:03 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2017-11-10 05:20:31 +0800 |
commit | c9e0b298781ca1522f69cae66ac966a0e4800469 (patch) | |
tree | d53806707cd9e5532c88fc3eed3b085644a8f036 | |
parent | 3a96fec03b5b258a8a2ec5f1c2771cf2a9742e8b (diff) | |
download | dexon-sol-tools-c9e0b298781ca1522f69cae66ac966a0e4800469.tar dexon-sol-tools-c9e0b298781ca1522f69cae66ac966a0e4800469.tar.gz dexon-sol-tools-c9e0b298781ca1522f69cae66ac966a0e4800469.tar.bz2 dexon-sol-tools-c9e0b298781ca1522f69cae66ac966a0e4800469.tar.lz dexon-sol-tools-c9e0b298781ca1522f69cae66ac966a0e4800469.tar.xz dexon-sol-tools-c9e0b298781ca1522f69cae66ac966a0e4800469.tar.zst dexon-sol-tools-c9e0b298781ca1522f69cae66ac966a0e4800469.zip |
Add SubscriptionAlreadyPresent error
-rw-r--r-- | src/mempool/order_state_watcher.ts | 4 | ||||
-rw-r--r-- | src/types.ts | 1 | ||||
-rw-r--r-- | test/event_watcher_test.ts | 5 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/mempool/order_state_watcher.ts b/src/mempool/order_state_watcher.ts index 63e812054..d0bf5d89c 100644 --- a/src/mempool/order_state_watcher.ts +++ b/src/mempool/order_state_watcher.ts @@ -17,6 +17,7 @@ import { OnOrderStateChangeCallback, ExchangeEvents, TokenEvents, + ZeroExError, } from '../types'; import {Web3Wrapper} from '../web3_wrapper'; @@ -85,6 +86,9 @@ export class OrderStateWatcher { */ public subscribe(callback: OnOrderStateChangeCallback, numConfirmations: number): void { assert.isFunction('callback', callback); + if (!_.isUndefined(this._callbackAsync)) { + throw new Error(ZeroExError.SubscriptionAlreadyPresent); + } this._callbackAsync = callback; this._eventWatcher.subscribe(this._onMempoolEventCallbackAsync.bind(this), numConfirmations); } diff --git a/src/types.ts b/src/types.ts index 969f2e96d..246fd8641 100644 --- a/src/types.ts +++ b/src/types.ts @@ -16,6 +16,7 @@ export enum ZeroExError { OutOfGas = 'OUT_OF_GAS', NoNetworkId = 'NO_NETWORK_ID', SubscriptionNotFound = 'SUBSCRIPTION_NOT_FOUND', + SubscriptionAlreadyPresent = 'SUBSCRIPTION_ALREADY_PRESENT', } export enum InternalZeroExError { diff --git a/test/event_watcher_test.ts b/test/event_watcher_test.ts index 208871ea8..a246805a0 100644 --- a/test/event_watcher_test.ts +++ b/test/event_watcher_test.ts @@ -23,6 +23,7 @@ describe('EventWatcher', () => { let stubs: Sinon.SinonStub[] = []; let eventWatcher: EventWatcher; let web3Wrapper: Web3Wrapper; + const numConfirmations = 0; const logA = { address: '0x71d271f8b14adef568f8f28f1587ce7271ac4ca5', blockHash: null, @@ -87,7 +88,7 @@ describe('EventWatcher', () => { done(); } }; - eventWatcher.subscribe(callback); + eventWatcher.subscribe(callback, numConfirmations); }); it('correctly computes the difference and emits only changes', (done: DoneCallback) => { const initialLogs: Web3.LogEntry[] = [logA, logB]; @@ -121,6 +122,6 @@ describe('EventWatcher', () => { done(); } }; - eventWatcher.subscribe(callback); + eventWatcher.subscribe(callback, numConfirmations); }); }); |