diff options
author | Fabio Berger <me@fabioberger.com> | 2018-07-04 00:15:20 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-07-04 00:15:20 +0800 |
commit | 688b34710ea4b9262ac67d33b688751d5ca05a01 (patch) | |
tree | 637bd9efdf98a012a6b1dc14a2ed6c0e3a625367 /packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts | |
parent | 671f29774b9a46420fdee33e3ecbffc7fa6f4c1a (diff) | |
download | dexon-0x-contracts-688b34710ea4b9262ac67d33b688751d5ca05a01.tar dexon-0x-contracts-688b34710ea4b9262ac67d33b688751d5ca05a01.tar.gz dexon-0x-contracts-688b34710ea4b9262ac67d33b688751d5ca05a01.tar.bz2 dexon-0x-contracts-688b34710ea4b9262ac67d33b688751d5ca05a01.tar.lz dexon-0x-contracts-688b34710ea4b9262ac67d33b688751d5ca05a01.tar.xz dexon-0x-contracts-688b34710ea4b9262ac67d33b688751d5ca05a01.tar.zst dexon-0x-contracts-688b34710ea4b9262ac67d33b688751d5ca05a01.zip |
Update blockstream to latest version, propogate errors to top-level callers
Diffstat (limited to 'packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts')
-rw-r--r-- | packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts b/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts index 04f69bc3d..9cc661080 100644 --- a/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts +++ b/packages/contract-wrappers/src/contract_wrappers/contract_wrapper.ts @@ -9,7 +9,7 @@ import { } from '@0xproject/types'; import { intervalUtils } from '@0xproject/utils'; import { Web3Wrapper } from '@0xproject/web3-wrapper'; -import { Block, BlockAndLogStreamer } from 'ethereumjs-blockstream'; +import { Block, BlockAndLogStreamer, Log } from 'ethereumjs-blockstream'; import * as _ from 'lodash'; import { @@ -39,7 +39,7 @@ export abstract class ContractWrapper { public abstract abi: ContractAbi; protected _web3Wrapper: Web3Wrapper; protected _networkId: number; - private _blockAndLogStreamerIfExists?: BlockAndLogStreamer; + private _blockAndLogStreamerIfExists: BlockAndLogStreamer<Block, Log> | undefined; private _blockAndLogStreamIntervalIfExists?: NodeJS.Timer; private _filters: { [filterToken: string]: FilterObject }; private _filterCallbacks: { @@ -163,6 +163,7 @@ export abstract class ContractWrapper { this._blockAndLogStreamerIfExists = new BlockAndLogStreamer( this._web3Wrapper.getBlockAsync.bind(this._web3Wrapper), this._web3Wrapper.getLogsAsync.bind(this._web3Wrapper), + this._onBlockAndLogStreamerError.bind(this), ); const catchAllLogFilter = {}; this._blockAndLogStreamerIfExists.addLogFilter(catchAllLogFilter); @@ -180,6 +181,14 @@ export abstract class ContractWrapper { this._onLogStateChanged.bind(this, isRemoved), ); } + private _onBlockAndLogStreamerError(err: Error): void { + // Propogate all Blockstream subscriber errors to all + // top-level subscriptions + const filterCallbacks = _.values(this._filterCallbacks); + _.each(filterCallbacks, filterCallback => { + filterCallback(err); + }); + } private _onReconcileBlockError(err: Error): void { const filterTokens = _.keys(this._filterCallbacks); _.each(filterTokens, filterToken => { |