solver-sdk
Version:
SDK для интеграции с Code Solver Backend API
94 lines • 5.08 kB
TypeScript
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