1
Fork 0
mirror of https://github.com/Quackster/Havana.git synced 2025-07-02 04:37:47 +00:00

fix sendObject()

This commit is contained in:
Quackster 2024-07-12 20:54:26 +10:00
parent b64de80951
commit 42c811700b

View file

@ -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<MessageComposer> {
public class NetworkEncoder extends MessageToMessageEncoder<Object> {
final private static Logger log = LoggerFactory.getLogger(NetworkEncoder.class);
@Override
protected void encode(ChannelHandlerContext ctx, MessageComposer msg, List<Object> out) throws Exception {
protected void encode(ChannelHandlerContext ctx, Object outgoing, List<Object> 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);