From 6fdacca914ef38e6cc91292ef07c5af32bd92991 Mon Sep 17 00:00:00 2001
From: hcong <1050828145@qq.com>
Date: 星期二, 03 十二月 2024 11:12:40 +0800
Subject: [PATCH] 1. BgTask增加onStatusChange参数,通过外界传递如何发送状态改变的消息 2. BackgroundTaskCtrl.kt 创建了BgTask对象并传递了onStatusChange参数 3. WebSocketMessageUtil 类名修改为 WebSocketMessageDecoder 4. SendWebSocketMessageUtil 类名修改为 WebSocketSendMessageUtil

---
 src/main/kotlin/cn/flightfeather/supervision/common/executor/BgTask.kt |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 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..2ed156b 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,6 +11,7 @@
     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
@@ -22,26 +22,33 @@
     }
 
     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()
+        onStatusChange(taskStatus)
     }
 
     fun fail() {
         taskStatus.status = TaskStatus.FAIL
         complete()
+        onStatusChange(taskStatus)
     }
 
     fun shutdown() {
         if (future?.isCancelled == false && !future!!.isDone) {
             future!!.cancel(true)
-            taskStatus.status = TaskStatus.SHUTDOWN
-            complete()
         }
+        taskStatus.status = TaskStatus.SHUTDOWN
+        complete()
     }
 
     fun complete() {

--
Gitblit v1.9.3