worker-tls
Version:
worker-tls 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。
135 lines • 3.47 kB
TypeScript
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