
com.github.bezsias.multimap.BytePackager Maven / Gradle / Ivy
package com.github.bezsias.multimap;
import java.io.*;
import java.util.*;
public interface BytePackager {
BytePack pack(BytePack pack, List values) throws IOException;
BytePack pack(BytePack pack, T value) throws IOException;
ArrayList unpack(BytePack pack) throws IOException, ClassNotFoundException;
static BytePackager booleanBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> dis.readBoolean(), (value, oss, dos) -> dos.writeBoolean(value));
}
static BytePackager byteBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> dis.readByte(), (value, oss, dos) -> dos.writeByte(value));
}
static BytePackager shortBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> dis.readShort(), (value, oss, dos) -> dos.writeShort(value));
}
static BytePackager intBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> dis.readInt(), (value, oss, dos) -> dos.writeInt(value));
}
static BytePackager longBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> dis.readLong(), (value, oss, dos) -> dos.writeLong(value));
}
static BytePackager floatBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> dis.readFloat(), (value, oss, dos) -> dos.writeFloat(value));
}
static BytePackager doubleBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> dis.readDouble(), (value, oss, dos) -> dos.writeDouble(value));
}
static BytePackager objBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(blockSizeKb, (ois, dis) -> (T) ois.readUnshared(), (value, oss, dos) -> oss.writeUnshared(value));
}
static BytePackager byteArrayBytePackager(int blockSizeKb) throws IOException {
return new BytePackagerImpl<>(
blockSizeKb,
(ois, dis) -> {
int length = dis.readInt();
byte[] bytes = new byte[length];
dis.readFully(bytes);
return bytes;
},
(value, oss, dos) -> {
dos.writeInt(value.length);
dos.write(value);
}
);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy