/** * 작업 큐 관리 모듈 * 배치 작업의 큐 관리, 우선순위 정렬, 중복 방지 기능 제공 */ export interface QueuedJob { name: string; job: () => Promise; priority: number; retryCount?: number; } export interface JobQueueConfig { maxSize?: number; } /** * 작업 큐 관리자 * * 역할: * - 작업 추가/제거 * - 우선순위 기반 정렬 * - 중복 작업 방지 * - 큐 크기 관리 */ export declare class JobQueue { private queue; private runningJobs; private config; constructor(config?: JobQueueConfig); /** * 큐에 작업 추가 (중복 방지 포함) * * Race condition 방지를 위해 double-check pattern 적용 * - 실행 중인 작업이면 큐에 추가하기 전에 다시 한 번 확인 * - 큐에 추가 후 즉시 중복 체크하여 중복이면 제거 * * @param name 작업 이름 * @param job 실행할 작업 함수 * @param priority 우선순위 (낮을수록 높은 우선순위) * @param retryCount 재시도 횟수 * @returns 추가 성공 여부 */ add(name: string, job: () => Promise, priority: number, retryCount?: number): boolean; /** * 다음 작업 가져오기 (우선순위 순으로 정렬) * * @returns 다음 작업 또는 undefined */ getNext(): QueuedJob | undefined; /** * 다음 작업 미리보기 (큐에서 제거하지 않음) * * @returns 다음 작업 또는 undefined */ peekNext(): QueuedJob | undefined; /** * 실행 중인 작업으로 표시 * * @param name 작업 이름 */ markRunning(name: string): void; /** * 실행 완료된 작업 표시 제거 * * @param name 작업 이름 */ markCompleted(name: string): void; /** * 큐 크기 */ get size(): number; /** * 실행 중인 작업 수 */ get runningCount(): number; /** * 큐가 비어있는지 확인 */ get isEmpty(): boolean; /** * 큐 비우기 */ clear(): void; /** * 특정 작업이 실행 중인지 확인 * * @param name 작업 이름 */ isRunning(name: string): boolean; /** * 특정 작업이 큐에 있는지 확인 * * @param name 작업 이름 */ isQueued(name: string): boolean; } //# sourceMappingURL=job-queue.d.ts.map