@wahaha216/koishi-plugin-jmcomic
Version:
下载JM本子,无需python。支持pdf、zip加密。
76 lines (75 loc) • 1.91 kB
TypeScript
import { Config } from "..";
import { Logger } from "koishi";
import { JmTaskPayload } from "../processors/jmProcessor";
/**
* 任务可能的状态
* pending: 等待处理
* processing: 正在处理
* completed: 处理完成
* failed: 处理失败
*/
type TaskStatus = "pending" | "processing" | "completed" | "failed";
interface Task {
id: string;
payload: JmTaskPayload;
status: TaskStatus;
createdAt: string;
processedAt?: string;
error?: string;
}
type TaskProcessor = (payload: JmTaskPayload) => Promise<void>;
interface QueueOptions {
concurrency?: number;
}
interface AddTaskResult {
task: Task;
pendingAhead: number;
queuePosition: number;
}
export declare class Queue {
private tasks;
private processor;
private readonly concurrency;
private activeTasks;
/**
* koishi 配置项
*/
private config;
/**
* koishi 日志
*/
private logger;
constructor(processor: TaskProcessor, options: QueueOptions, config: Config, logger: Logger);
/**
* 向队列添加一个新任务
*/
add(payload: JmTaskPayload): AddTaskResult;
/**
* 获取任务状态
*/
getTask(id: string): Task | undefined;
/**
* 获取所有任务的只读列表
*/
getAllTasks(): Readonly<Task[]>;
/**
* 获取指定任务在队列中的位置信息
* @param taskId 任务ID
* @returns {pendingAhead: number, queuePosition: number}
* pendingAhead: 在此任务之前有多少个待处理任务
* queuePosition: 此任务在所有待处理任务中的位置(从1开始)
*/
getTaskQueuePosition(taskId: string): {
pendingAhead: number;
queuePosition: number;
};
/**
* 检查并处理队列中的任务
*/
private _processQueue;
/**
* 执行单个任务
*/
private _runTask;
}
export {};