package com.lambdaworks.redis.codec;
import java.nio.ByteBuffer;
/**
* A {@link RedisCodec} that uses plain byte arrays.
*
* @author Mark Paluch
* @since 3.3
*/
public class ByteArrayCodec implements RedisCodec<byte[], byte[]> {
public static final ByteArrayCodec INSTANCE = new ByteArrayCodec();
private static final byte[] EMPTY = new byte[0];
@Override
public byte[] decodeKey(ByteBuffer bytes) {
return getBytes(bytes);
}
@Override
public byte[] decodeValue(ByteBuffer bytes) {
return getBytes(bytes);
}
@Override
public ByteBuffer encodeKey(byte[] key) {
if(key == null){
return ByteBuffer.wrap(EMPTY);
}
return ByteBuffer.wrap(key);
}
@Override
public ByteBuffer encodeValue(byte[] value) {
if(value == null){
return ByteBuffer.wrap(EMPTY);
}
return ByteBuffer.wrap(value);
}
private static byte[] getBytes(ByteBuffer buffer) {
byte[] b = new byte[buffer.remaining()];
buffer.get(b);
return b;
}
}