import { INamedFunctions } from "./createWorkerURL"; import type { Optional } from "type-tls"; import type { Exec, ExecRecord } from "./dynamicWorkerAPI"; /** * 动态 Worker 给 Worker 扩展后的类型 */ export type DWorker = W & { /** * 当前正在执行的任务数 */ executingCount: number; /** * Worker的名字 */ name: string; /** * Worker所属的 WorkerClient 的id */ clientId: number; /** * Worker 本身的 id */ id: number; }; /** * 动态Worker 抽像基类 * * @remarks * 动态 Worker 具备以下特点: * * - 往 Worker 中添加函数、全局变量 等 * * - 调用 Worker 中的任意全局函数 或 全局变量 * * - 像调用本地方法一样调用 Worker 里的方法 * * - 会自动给实例自身添加快捷命令 * * - 支持异步、流 * * - 支持异步和流互相嵌套 * * - 支持 Worker 和 SharedWorker */ export declare abstract class WorkerClient { constructor(named?: Optional); /** * 实例的计数 * * @remarks * 用于给每次调用生成 id */ protected static instanceCount: number; readonly id: number; /** * Worker 的实例 */ abstract worker: DWorker; /** * 消息端口 */ get port(): MessagePort; /** * 获取 Worker 和 对应的 消息端口 */ get workerAndPort(): [DWorker, MessagePort]; /** * 获取消息端口 * @param worker * @returns */ getPort(worker: W): MessagePort; /** * 正在执行中的任务数 */ abstract executingCount: number; /** * 执行已开始 * @remarks * 开始执行 */ execStarted(worker: DWorker, execRec: ExecRecord): void; /** * 执行已开始 * @remarks * 开始执行 */ execEnded(worker: DWorker): void; /** * 执行命令的计数 * * @remarks * 用于给每次执行命令时生成 id */ protected execCount: number; /** * 获取本次执行的执行 id * @param cmdName * @returns */ getExecId(cmdName?: Optional): string; /** * 根据调用信息生成调用记录数据 * @param exec - 调用信息 * @returns */ getExecRecord(exec: Exec): ExecRecord; /** * 监听响应 * @param id * @returns */ listenResponse(id: string, worker: DWorker): Promise; /** * 执行 worker 中的命令 * * @remarks * 当 worker 中成功执行,且 this 上没有对应的成员时,则会自动新增对应的成员方法 * * @param exec - 命令信息 * @param transfer - 传递给 Worker 的可传递对象。这些对象的所有权将被转移给 Worker,而发当前环境将不再保有所有权。 * @returns */ execCMD(exec: Exec, transfer?: Transferable[]): Promise; /** * 往自身上添加命令成员 * @remarks * 会给实例自身上添加一个执行命令的快捷命令 * * @param name * @param isProperty - 添加到实例自身的快捷命令是否作为属性;如果是 true,则会在实例自身上生成快捷属性 */ setCMDToSelf(name: string, isProperty?: Optional): boolean; } //# sourceMappingURL=WorkerClient.d.ts.map