feat: 优化插件加载逻辑
This commit is contained in:
@@ -14,6 +14,7 @@ export namespace task {
|
||||
|
||||
constructor() {
|
||||
this.taskId = new AtomicInteger(0)
|
||||
process.on('core.disable', () => { this.disable() })
|
||||
process.on('task.finish', (task: task.Task) => {
|
||||
let taskId = task.getTaskId()
|
||||
this.cacheTasks.delete(taskId)
|
||||
@@ -24,28 +25,6 @@ export namespace task {
|
||||
})
|
||||
}
|
||||
|
||||
protected pluginCreate(plugin: plugin.Plugin, task: task.Task) {
|
||||
if (!this.pluginCacheTasks.has(plugin.description.name)) {
|
||||
this.pluginCacheTasks.set(plugin.description.name, new Map())
|
||||
}
|
||||
this.pluginCacheTasks.get(plugin.description.name).set(task.getTaskId(), task)
|
||||
return task
|
||||
}
|
||||
|
||||
protected pluginDisable(plugin: plugin.Plugin) {
|
||||
if (this.pluginCacheTasks.has(plugin.description.name)) {
|
||||
this.pluginCacheTasks.get(plugin.description.name).forEach((task) => task.cancel())
|
||||
this.pluginCacheTasks.delete(plugin.description.name)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得自增的任务ID
|
||||
*/
|
||||
protected nextId() {
|
||||
return this.taskId.incrementAndGet()
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建任务
|
||||
* @param func 任务内容
|
||||
@@ -73,6 +52,28 @@ export namespace task {
|
||||
if (plugin) { return this.pluginDisable(plugin) }
|
||||
this.disable0()
|
||||
}
|
||||
|
||||
protected pluginCreate(plugin: plugin.Plugin, task: task.Task) {
|
||||
if (!this.pluginCacheTasks.has(plugin.description.name)) {
|
||||
this.pluginCacheTasks.set(plugin.description.name, new Map())
|
||||
}
|
||||
this.pluginCacheTasks.get(plugin.description.name).set(task.getTaskId(), task)
|
||||
return task
|
||||
}
|
||||
|
||||
protected pluginDisable(plugin: plugin.Plugin) {
|
||||
if (this.pluginCacheTasks.has(plugin.description.name)) {
|
||||
this.pluginCacheTasks.get(plugin.description.name).forEach((task) => task.cancel())
|
||||
this.pluginCacheTasks.delete(plugin.description.name)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得自增的任务ID
|
||||
*/
|
||||
protected nextId() {
|
||||
return this.taskId.incrementAndGet()
|
||||
}
|
||||
protected abstract create0(owner: plugin.Plugin, func: Function, id: number): task.Task
|
||||
protected abstract disable0()
|
||||
}
|
||||
@@ -95,6 +96,9 @@ export namespace task {
|
||||
this.owner = owner
|
||||
this.func = func
|
||||
this.taskId = id
|
||||
this.on('finish', () => {
|
||||
process.emit('task.finish', this)
|
||||
})
|
||||
}
|
||||
|
||||
getOwner() {
|
||||
@@ -163,7 +167,6 @@ export namespace task {
|
||||
}
|
||||
|
||||
protected finish() {
|
||||
process.emit('task.finish', this)
|
||||
this.emit('finish', this)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user