package network.thunder.core.communication.nio.handler.low;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import network.thunder.core.communication.Message;
import network.thunder.core.communication.objects.messages.interfaces.helper.MessageSerializer;
/**
* Created by matsjerratsch on 13/10/2015.
*/
public class MessageObjectToByteHandler extends MessageToByteEncoder {
MessageSerializer serializater;
public MessageObjectToByteHandler (MessageSerializer serializater) {
this.serializater = serializater;
}
@Override
public boolean acceptOutboundMessage (Object msg) {
return msg instanceof Message;
}
@Override
protected void encode (ChannelHandlerContext ctx, Object msg, ByteBuf out) throws Exception {
// System.out.println("Outgoing: " + msg);
try {
Message message = (Message) msg;
// System.out.println(new Gson().toJson(message));
// byte[] data = Tools.stringToByte(new Gson().toJson(message));
// byte[] data = new Gson().toJson(message).getBytes("UTF-8");
byte[] data = serializater.serializeMessage(message);
out.writeBytes(data);
ctx.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}