Add shutdown hook

Signed-off-by: Graham <gpe@openrs2.org>
Graham 4 years ago
parent dc4b769f29
commit 43b8be3ff3
  1. 14
      game/src/main/kotlin/org/openrs2/game/GameServer.kt

@ -13,16 +13,28 @@ public class GameServer @Inject constructor(
private val serviceManager = ServiceManager(services) private val serviceManager = ServiceManager(services)
public fun run(start: Long) { public fun run(start: Long) {
serviceManager.startAsync().awaitHealthy() val shutdownHook = Thread(::stop)
serviceManager.startAsync()
runtime.addShutdownHook(shutdownHook)
serviceManager.awaitHealthy()
val elapsed = System.nanoTime() - start val elapsed = System.nanoTime() - start
logger.info { "Started OpenRS2 in ${elapsed / NANOS_PER_MILLI} milliseconds" } logger.info { "Started OpenRS2 in ${elapsed / NANOS_PER_MILLI} milliseconds" }
serviceManager.awaitStopped() serviceManager.awaitStopped()
runtime.removeShutdownHook(shutdownHook)
}
private fun stop() {
logger.info { "Stopping OpenRS2..." }
serviceManager.stopAsync().awaitStopped()
logger.info { "Stopped OpenRS2" }
} }
private companion object { private companion object {
private val logger = InlineLogger() private val logger = InlineLogger()
private val runtime = Runtime.getRuntime()
private const val NANOS_PER_MILLI = 1_000_000 private const val NANOS_PER_MILLI = 1_000_000
} }
} }

Loading…
Cancel
Save