@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
JavaScript
;
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