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
TypeScript
/**
* 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;
}