/** * Return a direct allocated * bytebuffer from the compression codec. * The size of the bytebuffer is calculated to be: * 40: 8 + 32 * two ints representing their enum values * for the compression algorithm and opType * * and 4 longs for the compressed and * original sizes * @return the bytebuffer described above */ public ByteBuffer toByteBuffer() { //2 ints at 4 bytes a piece, this includes the compression algorithm //that we convert to enum int enumSize = 2 * 4; //4 longs at 8 bytes a piece int sizesLength = 4 * 8; ByteBuffer directAlloc = ByteBuffer.allocateDirect(enumSize + sizesLength).order(ByteOrder.nativeOrder()); directAlloc.putInt(compressionType.ordinal()); directAlloc.putInt(CompressionAlgorithm.valueOf(compressionAlgorithm).ordinal()); directAlloc.putLong(originalLength); directAlloc.putLong(compressedLength); directAlloc.putLong(numberOfElements); directAlloc.putLong(originalElementSize); directAlloc.rewind(); return directAlloc; }
/** * Return a direct allocated * bytebuffer from the compression codec. * The size of the bytebuffer is calculated to be: * 40: 8 + 32 * two ints representing their enum values * for the compression algorithm and type * * and 4 longs for the compressed and * original sizes * @return the bytebuffer described above */ public ByteBuffer toByteBuffer() { //2 ints at 4 bytes a piece, this includes the compression algorithm //that we convert to enum int enumSize = 2 * 4; //4 longs at 8 bytes a piece int sizesLength = 4 * 8; ByteBuffer directAlloc = ByteBuffer.allocateDirect(enumSize + sizesLength).order(ByteOrder.nativeOrder()); directAlloc.putInt(compressionType.ordinal()); directAlloc.putInt(CompressionAlgorithm.valueOf(compressionAlgorithm).ordinal()); directAlloc.putLong(originalLength); directAlloc.putLong(compressedLength); directAlloc.putLong(numberOfElements); directAlloc.putLong(originalElementSize); directAlloc.rewind(); return directAlloc; }