/** * @return a snapshot of the memory mapped regions. The snapshot can * only use existing regions, it cannot create new ones. */ public MmappedRegions sharedCopy() { return new MmappedRegions(this); }
private void updateRegions(ChannelProxy channel, long length) { if (regions != null && !regions.isValid(channel)) { Throwable err = regions.close(null); if (err != null) logger.error("Failed to close mapped regions", err); regions = null; } if (regions == null) regions = MmappedRegions.map(channel, length); else regions.extend(length); } }
@Override public void close() { regions.closeQuietly(); }
public void extend(long length) { if (length < 0) throw new IllegalArgumentException("Length must not be negative"); assert !isCopy() : "Copies cannot be extended"; if (length <= state.length) return; updateState(length); copy = new State(state); }
regions = MmappedRegions.map(channelCopy, compressionMetadata); rebuffererFactory = maybeCached(new CompressedChunkReader.Mmap(channelCopy, compressionMetadata, regions)); rebuffererFactory = new MmapRebufferer(channelCopy, length, regions.sharedCopy());
public void closeQuietly() { Throwable err = close(null); if (err != null) { JVMStabilityInspector.inspectThrowable(err); // This is not supposed to happen LoggerFactory.getLogger(getClass()).error("Error while closing mmapped regions", err); } }
@Override public BufferHolder rebuffer(long position) { return regions.floor(position); }
public Region floor(long position) { assert !isCleanedUp() : "Attempted to use closed region"; return state.floor(position); }
public void extend(long length) { if (length < 0) throw new IllegalArgumentException("Length must not be negative"); assert !isCopy() : "Copies cannot be extended"; if (length <= state.length) return; updateState(length); copy = new State(state); }
regions = MmappedRegions.map(channelCopy, compressionMetadata); rebuffererFactory = maybeCached(new CompressedChunkReader.Mmap(channelCopy, compressionMetadata, regions)); rebuffererFactory = new MmapRebufferer(channelCopy, length, regions.sharedCopy());
public Throwable close(Throwable accumulate) { if (!compressed && regions != null) accumulate = regions.close(accumulate); if (channel != null) return channel.close(accumulate); return accumulate; }
@Override public BufferHolder rebuffer(long position) { return regions.floor(position); }
public Region floor(long position) { assert !isCleanedUp() : "Attempted to use closed region"; return state.floor(position); }
private void updateRegions(ChannelProxy channel, long length) { if (regions != null && !regions.isValid(channel)) { Throwable err = regions.close(null); if (err != null) logger.error("Failed to close mapped regions", err); regions = null; } if (regions == null) regions = MmappedRegions.map(channel, length); else regions.extend(length); } }
/** * @return a snapshot of the memory mapped regions. The snapshot can * only use existing regions, it cannot create new ones. */ public MmappedRegions sharedCopy() { return new MmappedRegions(this); }
public void extend(long length) { if (length < 0) throw new IllegalArgumentException("Length must not be negative"); assert !isCopy() : "Copies cannot be extended"; if (length <= state.length) return; updateState(length); copy = new State(state); }
regions = MmappedRegions.map(channelCopy, compressionMetadata); rebuffererFactory = maybeCached(new CompressedChunkReader.Mmap(channelCopy, compressionMetadata, regions)); rebuffererFactory = new MmapRebufferer(channelCopy, length, regions.sharedCopy());
@Override public void close() { regions.closeQuietly(); }
public void closeQuietly() { Throwable err = close(null); if (err != null) { JVMStabilityInspector.inspectThrowable(err); // This is not supposed to happen LoggerFactory.getLogger(getClass()).error("Error while closing mmapped regions", err); } }
@Override public BufferHolder rebuffer(long position) { return regions.floor(position); }