
com.github.davidmoten.rx.buffertofile.DataSerializers Maven / Gradle / Ivy
package com.github.davidmoten.rx.buffertofile;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public final class DataSerializers {
private DataSerializers() {
// prevent instantiation
}
public static DataSerializer string() {
return StringHolder.INSTANCE;
}
private static final class StringHolder {
final static DataSerializer INSTANCE = new DataSerializer() {
@Override
public void serialize(DataOutput output, String t) throws IOException {
output.writeUTF(t);
}
@Override
public String deserialize(DataInput input) throws IOException {
return input.readUTF();
}
@Override
public int size() {
return 0;
}
};
}
public static DataSerializer integer() {
return IntegerHolder.INSTANCE;
}
private static final class IntegerHolder {
final static DataSerializer INSTANCE = new DataSerializer() {
@Override
public void serialize(DataOutput output, Integer t) throws IOException {
output.writeInt(t);
}
@Override
public Integer deserialize(DataInput input) throws IOException {
return input.readInt();
}
@Override
public int size() {
return 4;
}
};
}
public static DataSerializer byteArray() {
return ByteArrayHolder.INSTANCE;
}
private static final class ByteArrayHolder {
final static DataSerializer INSTANCE = new DataSerializer() {
@Override
public void serialize(DataOutput output, byte[] bytes) throws IOException {
output.writeInt(bytes.length);
output.write(bytes);
}
@Override
public byte[] deserialize(DataInput input) throws IOException {
int length = input.readInt();
byte[] bytes = new byte[length];
input.readFully(bytes);
return bytes;
}
@Override
public int size() {
return 0;
}
};
}
@SuppressWarnings("unchecked")
public static DataSerializer javaIO() {
return (DataSerializer) JavaIOHolder.INSTANCE;
}
private static final class JavaIOHolder {
final static DataSerializer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy