From 981656d583e04274b4d828dc77636243dc169b88 Mon Sep 17 00:00:00 2001 From: hcong <1050828145@qq.com> Date: 星期二, 03 十二月 2024 16:00:06 +0800 Subject: [PATCH] 1. 新增BgTask状态修改函数:先修改状态后发送状态回调 2. WebSocketMessageDecoder 改名 WebSocketMessageParser --- src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt | 26 ++++++++++++++++++-------- 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt b/src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt index 953eac3..3a0b2b1 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt @@ -1,6 +1,5 @@ package cn.flightfeather.supervision.common.executor -import org.springframework.scheduling.annotation.Async import java.time.LocalDateTime import java.util.concurrent.Future @@ -12,39 +11,50 @@ 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() { - val res = task() - if (res) success() else fail() + try { + val res = task() + if (res) success() else fail() + } catch (e: Exception) { + fail() + taskStatus.extra = e.message + } } 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() } + complete() + setStatus(TaskStatus.SHUTDOWN) } fun complete() { taskStatus.endTime = LocalDateTime.now() } + + fun setStatus(status: TaskStatus) { + taskStatus.status = status + onStatusChange(taskStatus) + } } \ No newline at end of file -- Gitblit v1.9.3