From 42c811700bf0175f9f34d272f403e6f0faada37a Mon Sep 17 00:00:00 2001 From: Quackster Date: Fri, 12 Jul 2024 20:54:26 +1000 Subject: [PATCH] fix sendObject() --- .../server/netty/codec/NetworkEncoder.java | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/Havana-Server/src/main/java/org/alexdev/havana/server/netty/codec/NetworkEncoder.java b/Havana-Server/src/main/java/org/alexdev/havana/server/netty/codec/NetworkEncoder.java index cb8042a..332b0dd 100644 --- a/Havana-Server/src/main/java/org/alexdev/havana/server/netty/codec/NetworkEncoder.java +++ b/Havana-Server/src/main/java/org/alexdev/havana/server/netty/codec/NetworkEncoder.java @@ -13,6 +13,7 @@ import org.alexdev.havana.messages.outgoing.rooms.user.CHAT_MESSAGE; import org.alexdev.havana.messages.types.MessageComposer; import org.alexdev.havana.messages.types.PlayerMessageComposer; import org.alexdev.havana.server.netty.streams.NettyResponse; +import org.alexdev.havana.util.StringUtil; import org.alexdev.havana.util.config.ServerConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,35 +21,44 @@ import org.slf4j.LoggerFactory; import java.nio.Buffer; import java.util.List; -public class NetworkEncoder extends MessageToMessageEncoder { +public class NetworkEncoder extends MessageToMessageEncoder { final private static Logger log = LoggerFactory.getLogger(NetworkEncoder.class); @Override - protected void encode(ChannelHandlerContext ctx, MessageComposer msg, List out) throws Exception { + protected void encode(ChannelHandlerContext ctx, Object outgoing, List out) throws Exception { Player player = ctx.channel().attr(Player.PLAYER_KEY).get(); ByteBuf buffer = Unpooled.buffer(); - if (msg instanceof PlayerMessageComposer) { - PlayerMessageComposer playerMessageComposer = (PlayerMessageComposer) msg; - playerMessageComposer.setPlayer(player); + if (outgoing instanceof MessageComposer) { + var msg = (MessageComposer) outgoing; + + if (msg instanceof PlayerMessageComposer) { + PlayerMessageComposer playerMessageComposer = (PlayerMessageComposer) msg; + playerMessageComposer.setPlayer(player); + } + + NettyResponse response = new NettyResponse(msg.getHeader(), buffer); + + try { + msg.compose(response); + } catch (Exception ex) { + Log.getErrorLogger().error("Error occurred when composing (" + response.getHeader() + "):", ex); + return; + } + + if (!response.isFinalised()) { + buffer.writeByte(1); + response.setFinalised(true); + } + + if (ServerConfiguration.getBoolean("log.sent.packets")) { + log.info("SENT 1: {} / {}", msg.getHeader(), response.getBodyString()); + } } - NettyResponse response = new NettyResponse(msg.getHeader(), buffer); - - try { - msg.compose(response); - } catch (Exception ex) { - Log.getErrorLogger().error("Error occurred when composing (" + response.getHeader() + "):", ex); - return; - } - - if (!response.isFinalised()) { - buffer.writeByte(1); - response.setFinalised(true); - } - - if (ServerConfiguration.getBoolean("log.sent.packets")) { - log.info("SENT 1: {} / {}", msg.getHeader(), response.getBodyString()); + if (outgoing instanceof String) { + var msgString = (String) outgoing; + buffer.writeBytes(msgString.getBytes(StringUtil.getCharset())); } out.add(buffer);