@Override public ChannelProxy channel() { return source.channel(); }
public Aligned(ChunkReader wrapped) { super(wrapped); assert Integer.bitCount(wrapped.chunkSize()) == 1; }
@Override public void close() { assert offset == -1; // reader must be closed at this point. source.close(); }
@Override public Buffer load(Key key) throws Exception { ChunkReader rebufferer = key.file; metrics.misses.mark(); try (Timer.Context ctx = metrics.missLatency.time()) { ByteBuffer buffer = BufferPool.get(key.file.chunkSize(), key.file.preferredBufferType()); assert buffer != null; rebufferer.readChunk(key.position, buffer); return new Buffer(buffer, key.position); } }
protected BufferManagingRebufferer(ChunkReader wrapped) { this.source = wrapped; buffer = BufferPool.get(wrapped.chunkSize(), wrapped.preferredBufferType()).order(ByteOrder.BIG_ENDIAN); buffer.limit(0); }
@Override public long fileLength() { return source.fileLength(); }
@Override public double getCrcCheckChance() { return source.getCrcCheckChance(); }
@Override public BufferHolder rebuffer(long position) { offset = alignedPosition(position); source.readChunk(offset, buffer); return this; }
/** * Open a RandomAccessReader (not compressed, not mmapped, no read throttling) that will own its channel. * * @param file File to open for reading * @return new RandomAccessReader that owns the channel opened in this method. */ @SuppressWarnings("resource") public static RandomAccessReader open(File file) { ChannelProxy channel = new ChannelProxy(file); try { ChunkReader reader = new SimpleChunkReader(channel, -1, BufferType.OFF_HEAP, DEFAULT_BUFFER_SIZE); Rebufferer rebufferer = reader.instantiateRebufferer(); return new RandomAccessReaderWithOwnChannel(rebufferer); } catch (Throwable t) { channel.close(); throw t; } } }
@Override public Buffer load(Key key) throws Exception { ChunkReader rebufferer = key.file; metrics.misses.mark(); try (Timer.Context ctx = metrics.missLatency.time()) { ByteBuffer buffer = BufferPool.get(key.file.chunkSize(), key.file.preferredBufferType()); assert buffer != null; rebufferer.readChunk(key.position, buffer); return new Buffer(buffer, key.position); } }
protected BufferManagingRebufferer(ChunkReader wrapped) { this.source = wrapped; buffer = BufferPool.get(wrapped.chunkSize(), wrapped.preferredBufferType()).order(ByteOrder.BIG_ENDIAN); buffer.limit(0); }
@Override public long fileLength() { return source.fileLength(); }
@Override public double getCrcCheckChance() { return source.getCrcCheckChance(); }
@Override public BufferHolder rebuffer(long position) { offset = alignedPosition(position); source.readChunk(offset, buffer); return this; }
/** * Open a RandomAccessReader (not compressed, not mmapped, no read throttling) that will own its channel. * * @param file File to open for reading * @return new RandomAccessReader that owns the channel opened in this method. */ @SuppressWarnings("resource") public static RandomAccessReader open(File file) { ChannelProxy channel = new ChannelProxy(file); try { ChunkReader reader = new SimpleChunkReader(channel, -1, BufferType.OFF_HEAP, DEFAULT_BUFFER_SIZE); Rebufferer rebufferer = reader.instantiateRebufferer(); return new RandomAccessReaderWithOwnChannel(rebufferer); } catch (Throwable t) { channel.close(); throw t; } } }
@Override public Buffer load(Key key) throws Exception { ChunkReader rebufferer = key.file; metrics.misses.mark(); try (Timer.Context ctx = metrics.missLatency.time()) { ByteBuffer buffer = BufferPool.get(key.file.chunkSize(), key.file.preferredBufferType()); assert buffer != null; rebufferer.readChunk(key.position, buffer); return new Buffer(buffer, key.position); } }
protected BufferManagingRebufferer(ChunkReader wrapped) { this.source = wrapped; buffer = BufferPool.get(wrapped.chunkSize(), wrapped.preferredBufferType()).order(ByteOrder.BIG_ENDIAN); buffer.limit(0); }
@Override public ChannelProxy channel() { return source.channel(); }
@Override public void close() { assert offset == -1; // reader must be closed at this point. source.close(); }
@Override public long fileLength() { return source.fileLength(); }