hcong
2024-12-10 82baf5d28ce79aa4d3b64956207d247596726924
src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt
@@ -11,13 +11,14 @@
    val id: String,
    val name: String,
    private val task: () -> Boolean,
    private val onStatusChange: (status: BgTaskStatus) -> Unit
) {
    var taskStatus = BgTaskStatus(type, id, name)
    var future: Future<*>? = null
    fun ready() {
        taskStatus.status = TaskStatus.RUNNING
        taskStatus.startTime = LocalDateTime.now()
        setStatus(TaskStatus.RUNNING)
    }
    fun execute() {
@@ -31,24 +32,29 @@
    }
    fun success() {
        taskStatus.status = TaskStatus.SUCCESS
        complete()
        setStatus(TaskStatus.SUCCESS)
    }
    fun fail() {
        taskStatus.status = TaskStatus.FAIL
        complete()
        setStatus(TaskStatus.FAIL)
    }
    fun shutdown() {
        if (future?.isCancelled == false && !future!!.isDone) {
            future!!.cancel(true)
        }
        taskStatus.status = TaskStatus.SHUTDOWN
        complete()
        setStatus(TaskStatus.SHUTDOWN)
    }
    fun complete() {
        taskStatus.endTime = LocalDateTime.now()
    }
    fun setStatus(status: TaskStatus) {
        taskStatus.status = status
        onStatusChange(taskStatus)
    }
}