From 1fd85f22499a2daade8a12e25f2b159a867ecdfd Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Sat, 24 Feb 2024 22:48:24 +0500 Subject: [PATCH] Show server side messages in F3 on disconnect --- .../core/network/NetworkClient.java | 4 ++- .../core/network/protocol/MessageHandler.java | 26 +++++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/NetworkClient.java b/core/src/main/java/com/seibel/distanthorizons/core/network/NetworkClient.java index e138509ae..45c5873b8 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/NetworkClient.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/NetworkClient.java @@ -103,7 +103,9 @@ public class NetworkClient extends NetworkEventSource implements IConnection, Au { this.registerHandler(CloseReasonMessage.class, closeReasonMessage -> { - LOGGER.warn("Received disconnect reason: " + closeReasonMessage.reason); + String fullCloseText = "[Server] " + closeReasonMessage.reason; + LOGGER.warn(fullCloseText); + this.closeReason = new Exception(fullCloseText); this.connectionState.set(EConnectionState.GOT_CLOSE_REASON); }); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/protocol/MessageHandler.java b/core/src/main/java/com/seibel/distanthorizons/core/network/protocol/MessageHandler.java index eb2c00d63..6ff466ef7 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/protocol/MessageHandler.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/protocol/MessageHandler.java @@ -40,16 +40,16 @@ public class MessageHandler extends SimpleChannelInboundHandler private final BiConsumer messageConsumer; private final Consumer channelActiveConsumer; - private final BiConsumer closeReasonConsumer; + private final BiConsumer exceptionConsumer; public MessageHandler( BiConsumer messageConsumer, Consumer channelActiveConsumer, - BiConsumer closeReasonConsumer) + BiConsumer exceptionConsumer) { this.messageConsumer = messageConsumer; this.channelActiveConsumer = channelActiveConsumer; - this.closeReasonConsumer = closeReasonConsumer; + this.exceptionConsumer = exceptionConsumer; } @Override @@ -66,19 +66,9 @@ public class MessageHandler extends SimpleChannelInboundHandler this.channelActiveConsumer.accept(ctx); } - @Override - public void channelInactive(@NotNull ChannelHandlerContext channelContext) throws Exception - { - super.channelInactive(channelContext); - this.channelRead0(channelContext, new CloseEvent()); - } - @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { - this.closeReasonConsumer.accept(ctx, cause); - ctx.close(); - if (cause instanceof SocketException) { LOGGER.info("Exception caught in channel: [" + ctx.name() + "]: " + cause.getMessage()); @@ -86,7 +76,17 @@ public class MessageHandler extends SimpleChannelInboundHandler else { LOGGER.error("Exception caught in channel: [" + ctx.name() + "].", cause); + this.exceptionConsumer.accept(ctx, cause); } + + ctx.close(); + } + + @Override + public void channelInactive(@NotNull ChannelHandlerContext channelContext) throws Exception + { + super.channelInactive(channelContext); + this.channelRead0(channelContext, new CloseEvent()); } }