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)

106 lines (89 loc) 3.31 kB
import MetaApiWebsocketClient from "./metaApiWebsocket.client"; /** * Synchronization throttler used to limit the amount of concurrent synchronizations to prevent application * from being overloaded due to excessive number of synchronisation responses being sent. */ export default class SynchronizationThrottler { /** * Constructs the synchronization throttler * @param {MetaApiWebsocketClient} client MetaApi websocket client * @param {number} socketInstanceIndex index of socket instance that uses the throttler * @param {number} instanceNumber instance index number * @param {string} region server region * @param {SynchronizationThrottlerOpts} opts synchronization throttler options */ constructor(client: MetaApiWebsocketClient, socketInstanceIndex: number, instanceNumber: number, region: string, opts: SynchronizationThrottlerOpts); /** * Initializes the synchronization throttler */ start(): void; /** * Deinitializes the throttler */ stop(): void; /** * Fills a synchronization slot with synchronization id * @param {string} synchronizationId synchronization id */ updateSynchronizationId(synchronizationId: string): void; /** * Returns the list of currently synchronizing account ids */ get synchronizingAccounts(): string[]; /** * Returns the list of currenly active synchronization ids * @return {string[]} synchronization ids */ get activeSynchronizationIds(): string[]; /** * Returns the amount of maximum allowed concurrent synchronizations * @return {number} maximum allowed concurrent synchronizations */ get maxConcurrentSynchronizations(): number; /** * Returns flag whether there are free slots for synchronization requests * @return {boolean} flag whether there are free slots for synchronization requests */ get isSynchronizationAvailable(): boolean; /** * Removes synchronizations from queue and from the list by parameters * @param {string} accountId account id * @param {number} instanceIndex account instance index * @param {string} host account host name */ removeIdByParameters(accountId: string, instanceIndex: number, host: string): void; /** * Removes synchronization id from slots and removes ids for the same account from the queue * @param {string} synchronizationId synchronization id */ removeSynchronizationId(synchronizationId: string): void; /** * Clears synchronization ids on disconnect */ onDisconnect(): void; /** * Schedules to send a synchronization request for account * @param {string} accountId account id * @param {Object} request request to send * @param {Object} hashes terminal state hashes */ scheduleSynchronize(accountId: string, request: Object, hashes: Object): Promise<boolean>; } /** * Options for synchronization throttler */ declare type SynchronizationThrottlerOpts = { /** * amount of maximum allowed concurrent synchronizations */ maxConcurrentSynchronizations?: number, /** * allowed time for a synchronization in queue */ queueTimeoutInSeconds?: number, /** * time after which a synchronization slot * is freed to be used by another synchronization */ synchronizationTimeoutInSeconds?: number }