From da65496de70c2d9fa9482ee427416721f367bb9f Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Fri, 3 Jan 2025 11:30:18 -0300 Subject: [PATCH] recover service after crash --- .../citrine/server/CustomWebSocketServer.kt | 12 ++++++++++++ .../citrine/service/CustomWebSocketService.kt | 1 + .../citrine/service/WebSocketServerService.kt | 5 +++++ 3 files changed, 18 insertions(+) diff --git a/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt b/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt index 300e27d..958baae 100644 --- a/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt +++ b/app/src/main/java/com/greenart7c3/citrine/server/CustomWebSocketServer.kt @@ -9,6 +9,7 @@ import com.greenart7c3.citrine.BuildConfig import com.greenart7c3.citrine.Citrine import com.greenart7c3.citrine.database.AppDatabase import com.greenart7c3.citrine.database.toEventWithTags +import com.greenart7c3.citrine.service.CustomWebSocketService import com.greenart7c3.citrine.service.LocalPreferences import com.greenart7c3.citrine.utils.isParameterizedReplaceable import com.greenart7c3.citrine.utils.shouldDelete @@ -17,6 +18,8 @@ import com.vitorpamplona.quartz.events.Event import io.ktor.http.ContentType import io.ktor.http.HttpMethod import io.ktor.http.HttpStatusCode +import io.ktor.server.application.ApplicationStarted +import io.ktor.server.application.ApplicationStopped import io.ktor.server.application.install import io.ktor.server.cio.CIO import io.ktor.server.cio.CIOApplicationEngine @@ -276,6 +279,15 @@ class CustomWebSocketServer( port = port, host = host, ) { + monitor.subscribe(ApplicationStarted) { + Log.d(Citrine.TAG, "Server started on $host:$port") + CustomWebSocketService.hasStarted = true + } + + monitor.subscribe(ApplicationStopped) { + Log.d(Citrine.TAG, "Server stopped") + CustomWebSocketService.hasStarted = false + } install(WebSockets) { pingPeriodMillis = 1000L timeoutMillis = 300000L diff --git a/app/src/main/java/com/greenart7c3/citrine/service/CustomWebSocketService.kt b/app/src/main/java/com/greenart7c3/citrine/service/CustomWebSocketService.kt index cd39bb4..f4997ec 100644 --- a/app/src/main/java/com/greenart7c3/citrine/service/CustomWebSocketService.kt +++ b/app/src/main/java/com/greenart7c3/citrine/service/CustomWebSocketService.kt @@ -4,4 +4,5 @@ import com.greenart7c3.citrine.server.CustomWebSocketServer object CustomWebSocketService { var server: CustomWebSocketServer? = null + var hasStarted = false } diff --git a/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt b/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt index 863d5bb..0d43986 100644 --- a/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt +++ b/app/src/main/java/com/greenart7c3/citrine/service/WebSocketServerService.kt @@ -42,6 +42,11 @@ class WebSocketServerService : Service() { fun getService(): WebSocketServerService = this@WebSocketServerService } + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + Log.d(Citrine.TAG, "onStartCommand ${CustomWebSocketService.hasStarted}") + return START_STICKY + } + @SuppressLint("UnspecifiedRegisterReceiverFlag") override fun onCreate() { super.onCreate()