private void add(long pos, long size) { ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, pos, size); ++last; if (last == offsets.length) { offsets = Arrays.copyOf(offsets, offsets.length + REGION_ALLOC_SIZE); buffers = Arrays.copyOf(buffers, buffers.length + REGION_ALLOC_SIZE); } offsets[last] = pos; buffers[last] = buffer; }
private void add(long pos, long size) { ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, pos, size); ++last; if (last == offsets.length) { offsets = Arrays.copyOf(offsets, offsets.length + REGION_ALLOC_SIZE); buffers = Arrays.copyOf(buffers, buffers.length + REGION_ALLOC_SIZE); } offsets[last] = pos; buffers[last] = buffer; }
private void add(long pos, long size) { ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, pos, size); ++last; if (last == offsets.length) { offsets = Arrays.copyOf(offsets, offsets.length + REGION_ALLOC_SIZE); buffers = Arrays.copyOf(buffers, buffers.length + REGION_ALLOC_SIZE); } offsets[last] = pos; buffers[last] = buffer; }
@VisibleForTesting protected MappedBuffer(ChannelProxy file, int numPageBits) { if (numPageBits > Integer.SIZE - 1) throw new IllegalArgumentException("page size can't be bigger than 1G"); sizeBits = numPageBits; pageSize = 1 << sizeBits; position = 0; limit = capacity = file.size(); pages = new MappedByteBuffer[(int) (file.size() / pageSize) + 1]; try { long offset = 0; for (int i = 0; i < pages.length; i++) { long pageSize = Math.min(this.pageSize, (capacity - offset)); pages[i] = file.map(MapMode.READ_ONLY, offset, pageSize); offset += pageSize; } } finally { file.close(); } }
@VisibleForTesting protected MappedBuffer(ChannelProxy file, int numPageBits) { if (numPageBits > Integer.SIZE - 1) throw new IllegalArgumentException("page size can't be bigger than 1G"); sizeBits = numPageBits; pageSize = 1 << sizeBits; position = 0; limit = capacity = file.size(); pages = new MappedByteBuffer[(int) (file.size() / pageSize) + 1]; try { long offset = 0; for (int i = 0; i < pages.length; i++) { long pageSize = Math.min(this.pageSize, (capacity - offset)); pages[i] = file.map(MapMode.READ_ONLY, offset, pageSize); offset += pageSize; } } finally { file.close(); } }
@VisibleForTesting protected MappedBuffer(ChannelProxy file, int numPageBits) { if (numPageBits > Integer.SIZE - 1) throw new IllegalArgumentException("page size can't be bigger than 1G"); sizeBits = numPageBits; pageSize = 1 << sizeBits; position = 0; limit = capacity = file.size(); pages = new MappedByteBuffer[(int) (file.size() / pageSize) + 1]; try { long offset = 0; for (int i = 0; i < pages.length; i++) { long pageSize = Math.min(this.pageSize, (capacity - offset)); pages[i] = file.map(MapMode.READ_ONLY, offset, pageSize); offset += pageSize; } } finally { file.close(); } }