All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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