UNPKG

worker-tls

Version:

worker-tls 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。

135 lines 3.47 kB
import { INamedFunctions } from "./createWorkerURL"; import type { Optional } from "type-tls"; import type { Exec, ExecRecord } from "./dynamicWorkerAPI"; /** * 动态 Worker 给 Worker 扩展后的类型 */ export type DWorker<W extends AbstractWorker> = 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<W extends AbstractWorker = Worker> { constructor(named?: Optional<INamedFunctions>); /** * 实例的计数 * * @remarks * 用于给每次调用生成 id */ protected static instanceCount: number; readonly id: number; /** * Worker 的实例 */ abstract worker: DWorker<W>; /** * 消息端口 */ get port(): MessagePort; /** * 获取 Worker 和 对应的 消息端口 */ get workerAndPort(): [DWorker<W>, MessagePort]; /** * 获取消息端口 * @param worker * @returns */ getPort(worker: W): MessagePort; /** * 正在执行中的任务数 */ abstract executingCount: number; /** * 执行已开始 * @remarks * 开始执行 */ execStarted(worker: DWorker<W>, execRec: ExecRecord): void; /** * 执行已开始 * @remarks * 开始执行 */ execEnded(worker: DWorker<W>): void; /** * 执行命令的计数 * * @remarks * 用于给每次执行命令时生成 id */ protected execCount: number; /** * 获取本次执行的执行 id * @param cmdName * @returns */ getExecId(cmdName?: Optional<string>): string; /** * 根据调用信息生成调用记录数据 * @param exec - 调用信息 * @returns */ getExecRecord(exec: Exec): ExecRecord; /** * 监听响应 * @param id * @returns */ listenResponse(id: string, worker: DWorker<W>): Promise<any>; /** * 执行 worker 中的命令 * * @remarks * 当 worker 中成功执行,且 this 上没有对应的成员时,则会自动新增对应的成员方法 * * @param exec - 命令信息 * @param transfer - 传递给 Worker 的可传递对象。这些对象的所有权将被转移给 Worker,而发当前环境将不再保有所有权。 * @returns */ execCMD(exec: Exec, transfer?: Transferable[]): Promise<any>; /** * 往自身上添加命令成员 * @remarks * 会给实例自身上添加一个执行命令的快捷命令 * * @param name * @param isProperty - 添加到实例自身的快捷命令是否作为属性;如果是 true,则会在实例自身上生成快捷属性 */ setCMDToSelf(name: string, isProperty?: Optional<boolean>): boolean; } //# sourceMappingURL=WorkerClient.d.ts.map