/** * Enhanced TimeoutManager * * 고급 타임아웃 관리 시스템으로 다중 타임아웃 타이머를 처리하고 자동 재시도 기능을 제공합니다. * 메모리 누수를 방지하고 복잡한 비동기 워크플로우에서 타임아웃 처리를 중앙화합니다. */ /** * TimeoutManager 옵션 인터페이스 */ export interface TimeoutManagerOptions { /** 기본 최대 재시도 횟수 */ maxRetries?: number; /** 재시도 지연 시간 기본값 (ms) */ retryDelayBase?: number; /** 지터(무작위성) 최대값 (ms) */ maxJitter?: number; /** 최대 백오프 지연 시간 (ms) */ maxBackoffDelay?: number; /** 디버그 모드 활성화 */ debug?: boolean; } /** * 타임아웃 상태 열거형 */ export declare enum TimeoutStatus { /** 활성 상태 */ ACTIVE = "active", /** 완료됨 */ COMPLETED = "completed", /** 취소됨 */ CANCELLED = "cancelled", /** 재시도 중 */ RETRYING = "retrying", /** 실패 (모든 재시도 실패) */ FAILED = "failed" } /** * 타임아웃 정보 인터페이스 */ export interface TimeoutInfo { /** 타임아웃 ID */ id: string; /** 생성 시간 */ createdAt: number; /** 마지막 업데이트 시간 */ updatedAt: number; /** 상태 */ status: TimeoutStatus; /** 현재 재시도 횟수 */ retryCount: number; /** 최대 재시도 횟수 */ maxRetries: number; /** 원래 지연 시간 (ms) */ originalDelay: number; /** 현재 지연 시간 (ms) */ currentDelay: number; } /** * 향상된 타임아웃 관리자 클래스 */ export declare class TimeoutManager { /** 타임아웃 타이머 맵 */ private timeouts; /** 기본 최대 재시도 횟수 */ private maxRetries; /** 기본 재시도 지연 시간 (ms) */ private retryDelayBase; /** 최대 지터(무작위성) 값 (ms) */ private maxJitter; /** 최대 백오프 지연 시간 (ms) */ private maxBackoffDelay; /** 디버그 모드 여부 */ private debug; /** 성능 통계 */ private stats; /** * 타임아웃 관리자 생성자 * @param options 타임아웃 관리자 옵션 */ constructor(options?: TimeoutManagerOptions); /** * 타임아웃 설정 * 지정된 지연 시간 후 콜백을 실행합니다. * * @param id 고유 식별자 * @param callback 타임아웃 시 실행할 콜백 * @param delay 지연 시간 (ms) * @returns 타이머 ID */ set(id: string, callback: () => void, delay: number): number; /** * 기존 타임아웃 재설정 * 지연 시간을 재시작합니다. * * @param id 고유 식별자 * @param callback 타임아웃 시 실행할 콜백 * @param delay 지연 시간 (ms, 지정하지 않으면 원래 지연 시간 사용) * @returns 새 타이머 ID */ reset(id: string, callback: () => void, delay?: number): number; /** * 타임아웃 제거 * * @param id 고유 식별자 * @returns 타이머가 있어서 제거했으면 true, 없었으면 false */ clear(id: string): boolean; /** * 모든 타임아웃 제거 */ clearAll(): void; /** * 재시도 기능이 있는 타임아웃 설정 * 타임아웃 발생 시 지정된 횟수만큼 자동으로 재시도합니다. * * @param id 고유 식별자 * @param timeoutCallback 최종 타임아웃 콜백 (모든 재시도 실패 시) * @param retryCallback 재시도 콜백 (재시도 시마다 호출) * @param delay 타임아웃 지연 시간 (ms) * @param maxRetries 최대 재시도 횟수 (기본값: 클래스에 설정된 값) * @returns 타이머 ID */ setWithRetry(id: string, timeoutCallback: () => void, retryCallback: (retryCount: number, nextDelay: number) => void, delay: number, maxRetries?: number): number; /** * 재시도 카운터 초기화 * * @param id 고유 식별자 * @returns 초기화 성공 여부 */ resetRetryCounter(id: string): boolean; /** * 현재 재시도 횟수 조회 * * @param id 고유 식별자 * @returns 현재 재시도 횟수 (없으면 0) */ getRetryCount(id: string): number; /** * 타임아웃 상태 조회 * * @param id 고유 식별자 * @returns 타임아웃 상태 정보 (없으면 undefined) */ getTimeoutInfo(id: string): TimeoutInfo | undefined; /** * 모든 활성 타임아웃 ID 목록 조회 * * @returns 활성 타임아웃 ID 배열 */ getActiveTimeoutIds(): string[]; /** * 활성 타임아웃 개수 조회 * * @returns 활성 타임아웃 개수 */ get size(): number; /** * 통계 정보 조회 * * @returns 타임아웃 통계 정보 */ getStats(): { created: number; completed: number; cancelled: number; retried: number; failed: number; active: number; }; /** * 최대 재시도 횟수 설정 * * @param value 최대 재시도 횟수 */ setMaxRetries(value: number): void; /** * 기본 재시도 지연 시간 설정 * * @param value 기본 재시도 지연 시간 (ms) */ setRetryDelayBase(value: number): void; /** * 디버그 모드 설정 * * @param enabled 디버그 모드 활성화 여부 */ setDebug(enabled: boolean): void; /** * 지수적 백오프 지연 시간 계산 * * @param retryCount 현재 재시도 횟수 * @returns 다음 지연 시간 (ms) * @private */ private calculateBackoffDelay; /** * 디버그 로그 출력 * * @param message 로그 메시지 * @private */ private log; /** * 오류 로그 출력 * * @param message 오류 메시지 * @param error 오류 객체 * @private */ private logError; }