import { AgoraRteSequenceMessage, AgoraRteSequenceType } from '../type'; /** * 同步器基类 - 包含 WorkerSynchronizer 和 FallbackSynchronizer 的公共逻辑 * * 主要功能: * 1. 任务队列管理和排序 * 2. 序列间隙检测 * 3. 去重算法优化 * 4. 任务跳过逻辑 * 5. 统一的状态管理 */ export declare abstract class BaseSynchronizer { protected _userId: string; protected _sceneId: string; protected _queueTasks: AgoraRteSequenceMessage[]; protected _currentTask?: AgoraRteSequenceMessage; protected _lastSeq: number; protected _sequenceType: AgoraRteSequenceType; protected _running: boolean; protected _requestingGap: boolean; constructor(sceneId: string, sequenceType: AgoraRteSequenceType, userId: string); /** * 同步序列ID */ syncSequenceId(sequenceId: number): void; /** * 添加任务 */ addTasks(tasks: AgoraRteSequenceMessage[]): void; /** * 前置任务 */ prependTasks(tasks: AgoraRteSequenceMessage[]): void; /** * 同步序列 */ syncSequence(count: number): void; /** * 启动 */ start(): void; /** * 停止 */ stop(): void; /** * 销毁 */ destroy(): void; /** * 获取当前任务 */ getCurrentTask(): AgoraRteSequenceMessage | undefined; /** * 获取队列任务数量 */ getQueueSize(): number; /** * 获取最后序列号 */ getLastSeq(): number; /** * 检查任务是否已存在 */ hasTask(sequence: number): boolean; /** * 获取去重后的任务列表 */ getUniqueTasks(tasks: AgoraRteSequenceMessage[]): AgoraRteSequenceMessage[]; /** * 处理任务完成 */ handleTaskCompleted(task: AgoraRteSequenceMessage): void; /** * 获取序列类型标签 */ get sequenceTypeLabel(): string; /** * 排序任务 */ protected sortTasks(): void; /** * 查找序列间隙 */ protected findSequenceGap(): { seq: number; count: number; queueHeadSeq: number; } | null; /** * 通知任务队列更新 */ protected notifyTaskQueueUpdate(): void; /** * 运行下一个任务 */ protected runNextTask(): void; /** * 出队任务 */ protected dequeueTask(): AgoraRteSequenceMessage | null; /** * 检查任务是否应该被跳过 */ protected shouldSkipTask(task: AgoraRteSequenceMessage): boolean; protected deduplicateTasks(tasks: AgoraRteSequenceMessage[]): AgoraRteSequenceMessage[]; /** * 预留错误处理 */ protected handleError(message: string, context?: any): void; /** * 任务就绪通知 */ protected abstract onTaskReady(task: AgoraRteSequenceMessage): void; /** * 序列间隙检测通知 */ protected abstract onSequenceGapDetected(seq: number, count: number, queueHeadSeq: number): void; }