package it.cavallium.dbengine.database.serialization;
import com.google.common.primitives.Ints;
import com.google.common.primitives.Longs;
import org.jetbrains.annotations.NotNull;
public interface SerializerFixedBinaryLength extends Serializer {
int getSerializedBinaryLength();
static SerializerFixedBinaryLength noop(int length) {
return new SerializerFixedBinaryLength<>() {
@Override
public byte @NotNull [] deserialize(byte @NotNull [] serialized) {
assert serialized.length == getSerializedBinaryLength();
return serialized;
}
@Override
public byte @NotNull [] serialize(byte @NotNull [] deserialized) {
assert deserialized.length == getSerializedBinaryLength();
return deserialized;
}
@Override
public int getSerializedBinaryLength() {
return length;
}
};
}
static SerializerFixedBinaryLength intSerializer() {
return new SerializerFixedBinaryLength<>() {
@Override
public @NotNull Integer deserialize(byte @NotNull [] serialized) {
assert serialized.length == getSerializedBinaryLength();
return Ints.fromByteArray(serialized);
}
@Override
public byte @NotNull [] serialize(@NotNull Integer deserialized) {
return Ints.toByteArray(deserialized);
}
@Override
public int getSerializedBinaryLength() {
return Integer.BYTES;
}
};
}
static SerializerFixedBinaryLength longSerializer() {
return new SerializerFixedBinaryLength<>() {
@Override
public @NotNull Long deserialize(byte @NotNull [] serialized) {
assert serialized.length == getSerializedBinaryLength();
return Longs.fromByteArray(serialized);
}
@Override
public byte @NotNull [] serialize(@NotNull Long deserialized) {
return Longs.toByteArray(deserialized);
}
@Override
public int getSerializedBinaryLength() {
return Long.BYTES;
}
};
}
}