package redis.netty4; import com.google.common.base.Charsets; import io.netty.buffer.ByteBuf; import java.io.IOException; import static redis.util.Encoding.numToBytes; /** * Return the reply inline when you get an inline message. */ public class InlineReply implements Reply<Object> { private final Object o; public InlineReply(Object o) { this.o = o; } @Override public Object data() { return o; } @Override public void write(ByteBuf os) throws IOException { if (o == null) { os.writeBytes(CRLF); } else if (o instanceof String) { os.writeByte('+'); os.writeBytes(((String) o).getBytes(Charsets.US_ASCII)); os.writeBytes(CRLF); } else if (o instanceof ByteBuf) { os.writeByte('+'); os.writeBytes(((ByteBuf) o).array()); os.writeBytes(CRLF); } else if (o instanceof byte[]) { os.writeByte('+'); os.writeBytes((byte[]) o); os.writeBytes(CRLF); } else if (o instanceof Long) { os.writeByte(':'); os.writeBytes(numToBytes((Long) o, true)); } else { os.writeBytes("ERR invalid inline response".getBytes(Charsets.US_ASCII)); os.writeBytes(CRLF); } } }