@ -2,7 +2,6 @@ import { task, plugin } from '@ccms/api'
|
||||
import { inject, provideSingleton } from '@ccms/container'
|
||||
import thread_pool from '@ccms/common/dist/thread-pool'
|
||||
|
||||
const AtomicInteger = Java.type("java.util.concurrent.atomic.AtomicInteger")
|
||||
const AtomicBoolean = Java.type("java.util.concurrent.atomic.AtomicBoolean")
|
||||
const Thread = Java.type('java.lang.Thread')
|
||||
|
||||
@ -11,21 +10,19 @@ export class SpringTaskManager extends task.TaskManager {
|
||||
@inject(plugin.PluginInstance)
|
||||
private pluginInstance: any
|
||||
|
||||
private taskId: any
|
||||
private tasks: { [s: string]: task.Cancelable }
|
||||
private executor: java.util.concurrent.ThreadPoolExecutor
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
this.taskId = new AtomicInteger(0)
|
||||
this.tasks = {}
|
||||
this.executor = thread_pool.create({
|
||||
groupName: '@ccms/spring'
|
||||
})
|
||||
}
|
||||
|
||||
create0(func: Function): task.Task {
|
||||
return new SpringTask(this.pluginInstance, func, this)
|
||||
create0(owner: plugin.Plugin, func: Function, id: number): task.Task {
|
||||
return new SpringTask(owner, func, id, this)
|
||||
}
|
||||
callSyncMethod(func: Function): any {
|
||||
return func()
|
||||
@ -51,8 +48,8 @@ export class SpringTask extends task.Task {
|
||||
private taskManager: SpringTaskManager
|
||||
private running = new AtomicBoolean(true)
|
||||
|
||||
constructor(plugin: any, func: Function, taskManager: SpringTaskManager) {
|
||||
super(plugin, func)
|
||||
constructor(owner: plugin.Plugin, func: Function, id: number, taskManager: SpringTaskManager) {
|
||||
super(owner, func, id)
|
||||
this.id = taskManager.nextId()
|
||||
this.taskManager = taskManager
|
||||
}
|
||||
@ -83,19 +80,16 @@ export class SpringTask extends task.Task {
|
||||
this.cancel()
|
||||
}
|
||||
|
||||
cancel0(): any {
|
||||
cancel0() {
|
||||
var wasRunning = this.running.getAndSet(false)
|
||||
if (wasRunning) {
|
||||
this.taskManager.cancel(this.id)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
submit0(...args: any[]) {
|
||||
this.taskManager.submit(this.id, this, () => this.run(...args))
|
||||
return {
|
||||
cancel: () => {
|
||||
return this.cancel0()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user