UNPKG

solver-sdk

Version:

SDK для интеграции с Code Solver Backend API

94 lines 5.08 kB
import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js'; import { Logger } from './logger.js'; /** * Состояние подключения */ export interface ConnectionState { /** Время последнего успешного подключения */ lastConnectTime: number; /** Количество попыток переподключения */ reconnectAttempts: number; /** Состояние подключения */ connected: boolean; /** Состояние процесса переподключения */ reconnecting: boolean; } /** * Опции для менеджера состояния подключения */ export interface ConnectionStateManagerOptions { /** Стратегия задержки между попытками переподключения */ reconnectStrategy?: 'linear' | 'exponential'; /** Базовая задержка для переподключения в миллисекундах */ retryDelay?: number; /** Максимальная задержка для переподключения в миллисекундах */ maxRetryDelay?: number; /** Логгер для вывода сообщений */ logger?: Logger; } /** * Класс для управления состоянием подключений */ export declare class ConnectionStateManager { /** Стратегия задержки между попытками переподключения */ private readonly reconnectStrategy; /** Базовая задержка для переподключения в миллисекундах */ private readonly retryDelay; /** Максимальная задержка для переподключения в миллисекундах */ private readonly maxRetryDelay; /** Логгер для вывода сообщений */ private readonly logger; /** Хранилище состояний подключений */ private readonly states; /** * Создает новый менеджер состояния подключений * @param {ConnectionStateManagerOptions} options Опции менеджера состояния подключений */ constructor(options?: ConnectionStateManagerOptions); /** * Получает состояние подключения для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен * @returns {ConnectionState} Состояние подключения */ getState(namespace: WebSocketNamespace): ConnectionState; /** * Устанавливает состояние подключения для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен * @param {boolean} connected Состояние подключения * @param {boolean} reconnecting Состояние переподключения */ setConnectionState(namespace: WebSocketNamespace, connected: boolean, reconnecting?: boolean): void; /** * Увеличивает счетчик попыток переподключения для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен * @returns {number} Новое количество попыток */ incrementReconnectAttempts(namespace: WebSocketNamespace): number; /** * Рассчитывает задержку для переподключения на основе количества попыток и стратегии * @param {WebSocketNamespace} namespace Пространство имен * @returns {number} Задержка в миллисекундах */ calculateReconnectDelay(namespace: WebSocketNamespace): number; /** * Сбрасывает счетчик попыток переподключения для указанного пространства имен * @param {WebSocketNamespace} namespace Пространство имен */ resetReconnectAttempts(namespace: WebSocketNamespace): void; /** * Регистрирует успешное подключение * @param {WebSocketNamespace} namespace Пространство имен */ registerSuccessfulConnection(namespace: WebSocketNamespace): void; /** * Регистрирует отключение * @param {WebSocketNamespace} namespace Пространство имен */ registerDisconnection(namespace: WebSocketNamespace): void; /** * Регистрирует начало процесса переподключения * @param {WebSocketNamespace} namespace Пространство имен */ registerReconnecting(namespace: WebSocketNamespace): void; } //# sourceMappingURL=connection-state-manager.d.ts.map