From 5fe495649b85ddb0c6ad653b3a343d459f049860 Mon Sep 17 00:00:00 2001 From: Zmax0 Date: Tue, 25 Jun 2024 14:32:03 +0800 Subject: [PATCH] refactor: indicate client/server instance should be closed --- urban-spork-client/src/com/urbanspork/client/Client.java | 4 +++- .../src/com/urbanspork/common/channel/ExceptionHandler.java | 3 +-- urban-spork-server/src/com/urbanspork/server/Server.java | 4 +++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/urban-spork-client/src/com/urbanspork/client/Client.java b/urban-spork-client/src/com/urbanspork/client/Client.java index b1e291f..8f86407 100644 --- a/urban-spork-client/src/com/urbanspork/client/Client.java +++ b/urban-spork-client/src/com/urbanspork/client/Client.java @@ -25,6 +25,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.Closeable; import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.concurrent.CompletableFuture; @@ -101,7 +102,8 @@ protected void initChannel(Channel ch) { .bind(InetAddress.getLoopbackAddress(), config.getPort()).sync().channel(); } - public record Instance(ServerSocketChannel tcp, DatagramChannel udp, TrafficCounter traffic) { + public record Instance(ServerSocketChannel tcp, DatagramChannel udp, TrafficCounter traffic) implements Closeable { + @Override public void close() { traffic.stop(); tcp.close().awaitUninterruptibly(); diff --git a/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java b/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java index edcf7c4..8507fea 100644 --- a/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java +++ b/urban-spork-common/src/com/urbanspork/common/channel/ExceptionHandler.java @@ -30,8 +30,7 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { if (cause.getCause() instanceof InvalidCipherTextException) { logger.error("[{}][{}][{}] Invalid cipher text", transport, protocol, transLog); } else { - String msg = String.format("[%s][%s][%s] Caught exception", transport, protocol, transLog); - logger.error(msg, cause); + logger.error("[{}][{}][{}] Caught exception", transport, protocol, transLog, cause); } ctx.close(); } diff --git a/urban-spork-server/src/com/urbanspork/server/Server.java b/urban-spork-server/src/com/urbanspork/server/Server.java index 283d2f1..8513a5c 100644 --- a/urban-spork-server/src/com/urbanspork/server/Server.java +++ b/urban-spork-server/src/com/urbanspork/server/Server.java @@ -24,6 +24,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.Closeable; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -127,7 +128,8 @@ protected void initChannel(Channel ch) { } } - public record Instance(ServerSocketChannel tcp, Optional udp) { + public record Instance(ServerSocketChannel tcp, Optional udp) implements Closeable { + @Override public void close() { tcp.close().awaitUninterruptibly(); udp.ifPresent(c -> c.close().awaitUninterruptibly());