package net.scapeemulator.game.net.game;
import io.netty.buffer.MessageBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;
import java.io.IOException;
import net.scapeemulator.game.msg.CodecRepository;
import net.scapeemulator.game.msg.Message;
import net.scapeemulator.game.msg.MessageEncoder;
public final class GameMessageEncoder extends MessageToMessageEncoder<Message> {
private final CodecRepository codecs;
public GameMessageEncoder(CodecRepository codecs) {
this.codecs = codecs;
}
@SuppressWarnings("unchecked")
@Override
public void encode(ChannelHandlerContext ctx, Message message, MessageBuf<Object> out) throws IOException {
MessageEncoder<Message> encoder = (MessageEncoder<Message>) codecs.get(message.getClass());
out.add(encoder.encode(ctx.alloc(), message));
}
}