import type { ProducerConfig } from "./config"; import type { BatchLog } from "./types"; import { Batch } from "./batch"; import { RetryQueue } from "./retry_queue"; import type { ThreadPool } from "./thread_pool"; interface DispatcherCallbacks { /** 新日志进入缓存时,增加 Producer 层面的内存计数。 */ increaseBufferedSize: (delta: number) => void; } /** * 负责根据 Topic/ShardHash/Source/FileName/ContextFlow 维度聚合日志, * 并在满足批量条件或超时、重试到期时将批次提交给线程池发送。 */ export declare class Dispatcher { private readonly config; private readonly retryQueue; private readonly threadPool; private readonly callbacks; private readonly logGroupData; private timer; private closed; private forceClosed; constructor(params: { config: ProducerConfig; retryQueue: RetryQueue; threadPool: ThreadPool; callbacks: DispatcherCallbacks; }); /** 启动定时检查逻辑,用于处理 LingerTime 与重试到期。 */ start(): void; /** * 新日志进入 Dispatcher 进行聚合。 * @param batchLog 日志及其聚合 key。 * @param logSize 日志的 protobuf 编码大小。 */ handleLog(batchLog: BatchLog, logSize: number): Promise; getOrCreateBatch: (key: string, batchLog: BatchLog) => Batch; /** * 优雅关闭: * - 停止定时器; * - 将 logGroupData 中的所有批次提交线程池; * - 将重试队列中的所有批次提交线程池。 */ closeGracefully(): Promise; /** 强制关闭:丢弃所有待发送与待重试的数据。 */ closeForce(): void; private tick; private innerSendToServer; private getKeyString; } export {};