UNPKG

metaapi.cloud-sdk

Version:

SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)

98 lines (97 loc) 4.25 kB
/** * Subscription manager to handle account subscription logic */ export default class SubscriptionManager { private _websocketClient; private _latencyService; private _metaApi; private _subscriptions; private _awaitingResubscribe; private _subscriptionState; private _logger; private _timeoutErrorCounter; private _recentlyDeletedAccounts; /** * Constructs the subscription manager * @param {MetaApiWebsocketClient} websocketClient websocket client to use for sending requests * @param {MetaApi} metaApi metaApi instance */ constructor(websocketClient: any, metaApi: any); /** * Returns whether an account is currently subscribing * @param {String} accountId account id * @param {Number} instanceNumber instance index number * @returns {Boolean} whether an account is currently subscribing */ isAccountSubscribing(accountId: any, instanceNumber: any): boolean; /** * Returns whether an instance is in disconnected retry mode * @param {String} accountId account id * @param {Number} instanceNumber instance index number * @returns {Boolean} whether an account is currently subscribing */ isDisconnectedRetryMode(accountId: any, instanceNumber: any): any; /** * Returns whether an account subscription is active * @param {String} accountId account id * @returns {Boolean} instance actual subscribe state */ isSubscriptionActive(accountId: any): boolean; /** * Subscribes to the Metatrader terminal events * @param {String} accountId id of the MetaTrader account to subscribe to * @param {Number} instanceNumber instance index number * @returns {Promise} promise which resolves when subscription started */ subscribe(accountId: any, instanceNumber: any): Promise<any>; /** * Schedules to send subscribe requests to an account until cancelled * @param {String} accountId id of the MetaTrader account * @param {Number} instanceNumber instance index number * @param {Boolean} isDisconnectedRetryMode whether to start subscription in disconnected retry * mode. Subscription task in disconnected mode will be immediately replaced when the status packet is received */ scheduleSubscribe(accountId: any, instanceNumber: any, isDisconnectedRetryMode?: boolean): Promise<void>; /** * Unsubscribe from account * @param {String} accountId id of the MetaTrader account to unsubscribe * @param {Number} instanceNumber instance index number * @returns {Promise} promise which resolves when socket unsubscribed */ unsubscribe(accountId: any, instanceNumber: any): Promise<any>; /** * Cancels active subscription tasks for an instance id * @param {String} instanceId instance id to cancel subscription task for */ cancelSubscribe(instanceId: any): void; /** * Cancels active subscription tasks for an account * @param {String} accountId account id to cancel subscription tasks for */ cancelAccount(accountId: any): void; /** * Invoked on account timeout. * @param {String} accountId id of the MetaTrader account * @param {Number} instanceNumber instance index number */ onTimeout(accountId: any, instanceNumber: any): void; /** * Invoked when connection to MetaTrader terminal terminated * @param {String} accountId id of the MetaTrader account * @param {Number} instanceNumber instance index number */ onDisconnected(accountId: any, instanceNumber: any): Promise<void>; /** * Invoked when connection to MetaApi websocket API restored after a disconnect. * @param {Number} instanceNumber instance index number * @param {Number} socketInstanceIndex socket instance index * @param {String[]} reconnectAccountIds account ids to reconnect */ onReconnected(instanceNumber: any, socketInstanceIndex: any, reconnectAccountIds: any): void; /** * Schedules a task to refresh the account data * @param {string} accountId account id */ refreshAccount(accountId: any): void; _logSubscriptionError(accountId: any, message: any, error: any): void; }