public static @Nullable byte[] getMetadata(File file) throws IOException { final long length = file.length(); final MMapBuffer buffer = new MMapBuffer(file, 0, length, FileChannel.MapMode.READ_ONLY, ByteOrder.BIG_ENDIAN); final DirectMemory memory = buffer.memory(); final int metadataLength = memory.getInt(length - 12); if (metadataLength == Integer.MAX_VALUE) return null; final byte[] metadata = new byte[metadataLength]; memory.getBytes(length-12-metadataLength, metadata); return metadata; }
public static @Nullable byte[] getMetadata(File file) throws IOException { final long length = file.length(); final MMapBuffer buffer = new MMapBuffer(file, 0, length, FileChannel.MapMode.READ_ONLY, ByteOrder.BIG_ENDIAN); final DirectMemory memory = buffer.memory(); final int metadataLength = memory.getInt(length - 12); if (metadataLength == Integer.MAX_VALUE) return null; final byte[] metadata = new byte[metadataLength]; memory.getBytes(length-12-metadataLength, metadata); return metadata; }
int maxSize = 0; for (long i = start; i < end; ++i) { final int hash = hashesMemory.getInt(i * 4); offsets[hash] = offset; final int size = sizesMemory.getInt((hash + start) * 4); offset += size; if (size > maxSize) { for (long i = start; i < end; ++i) { final long sourceOffset = offsets[(int) (i - start)]; final int sourceSize = sizesMemory.getInt(i * 4); memory.getBytes(sourceOffset, tmpBuf, 0, sourceSize); out.write(tmpBuf, 0, sourceSize);
/** * st_dev: 8 * st_ino: 8 * st_mode: 4 * st_nlink: 8 * st_uid: 4 * st_gid: 4 * st_rdev: 8 * st_size: 8 * st_blksize: 8 * st_blocks: 8 * st_atime: 8 * st_mtime: 8 * st_ctime: 8 */ private Stat(DirectMemory direct) { device = direct.getLong(0); inode = direct.getLong(8); mode = direct.getInt(16); numLinks = direct.getLong(20); uid = direct.getInt(28); gid = direct.getInt(32); rdev = direct.getLong(36); size = direct.getLong(44); blockSize = direct.getLong(52); numBlocks = direct.getLong(60); aTime = direct.getLong(68); mTime = direct.getLong(76); cTime = direct.getLong(84); }
private static <K, V> Select sizesToSelect(final TableConfig<K, V> config, final File tempSizes, final long dataSize) throws IOException { final long numEntries = tempSizes.length() / 4; try (final MMapBuffer sizes = new MMapBuffer(tempSizes, 0L, numEntries * 4, FileChannel.MapMode.READ_ONLY, ByteOrder.nativeOrder())) { final DirectMemory sizesMemory = sizes.memory(); final long maxValue = config.compressOffset(dataSize, numEntries); final BitVector bits = LongArrayBitVector.ofLength(maxValue); for (long i = 0, offset = 0; i < numEntries; offset += sizesMemory.getInt(i * 4), ++i) { final long value = config.compressOffset(offset, i); bits.set(value); } return new HintedBsearchSelect(new Rank9(bits)); } }