UNPKG

@glue42/bbg-market-data

Version:

A high-level API that wraps existing Glue42 Bloomberg Bridge Market Data interop methods. The API is based on the jBloomberg open source wrapper.

55 lines 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Connection = void 0; const tslib_1 = require("tslib"); const types_1 = require("./../bridge/types"); const connection_status_1 = require("./connection-status"); const callback_registry_1 = tslib_1.__importDefault(require("callback-registry")); const constants_1 = require("./../constants"); const STATUS_CHANGED_EVENT = "status-changed"; class Connection { constructor(mdfBridge, connectionPeriodMsecs) { this.mdfBridge = mdfBridge; this.connectionPeriodMsecs = connectionPeriodMsecs; this.registry = callback_registry_1.default(); this.connectionStatus = connection_status_1.ConnectionStatus.Disconnected; this.subscribe(); } onConnectionStatusChanged(callback) { if (typeof callback != "function") { throw new Error("callback must be a function."); } return this.registry.add(STATUS_CHANGED_EVENT, callback, [this.connectionStatus]); } setConnectionStatus(newConnectionStatus) { if (this.connectionStatus !== newConnectionStatus) { this.connectionStatus = newConnectionStatus; this.registry.execute(STATUS_CHANGED_EVENT, this.connectionStatus); } } subscribe() { const handleData = (sessionStatus) => { if (sessionStatus == null) { return; } const newConnectionStatus = sessionStatus.state === types_1.SessionState.Connected ? connection_status_1.ConnectionStatus.Connected : connection_status_1.ConnectionStatus.Disconnected; this.setConnectionStatus(newConnectionStatus); }; const handleError = () => { this.setConnectionStatus(connection_status_1.ConnectionStatus.Disconnected); }; const handleClose = () => { this.setConnectionStatus(connection_status_1.ConnectionStatus.Disconnected); }; const retryPeriodMsecs = typeof this.connectionPeriodMsecs != "number" || this.connectionPeriodMsecs < constants_1.CONNECTION_RETRY_PERIOD_DEFAULT ? constants_1.CONNECTION_RETRY_PERIOD_DEFAULT : this.connectionPeriodMsecs; this.mdfBridge.subscribeForConnectionStatus(retryPeriodMsecs, { onData: handleData, onError: handleError, onClose: handleClose, }); } } exports.Connection = Connection; //# sourceMappingURL=connection.js.map