package com.github.xetorthio.jedis.codec; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; import java.util.List; public class RedisProtocolEncoder extends MessageToByteEncoder<List<byte[]>> { public static final byte DOLLAR_BYTE = '$'; public static final byte ASTERISK_BYTE = '*'; public static final byte PLUS_BYTE = '+'; public static final byte MINUS_BYTE = '-'; public static final byte COLON_BYTE = ':'; public static byte[] CrLf = "\r\n".getBytes(); @Override protected void encode(ChannelHandlerContext ctx, List<byte[]> msg, ByteBuf buffer) throws Exception { buffer.writeByte(ASTERISK_BYTE); buffer.writeBytes(("" + msg.size()).getBytes()); buffer.writeBytes(CrLf); for (byte[] bytes : msg) { buffer.writeByte(DOLLAR_BYTE); buffer.writeBytes(("" + bytes.length).getBytes()); buffer.writeBytes(CrLf); buffer.writeBytes(bytes); buffer.writeBytes(CrLf); } ctx.writeAndFlush(buffer); } }