public long transferTo(WritableByteChannel target, long position) throws IOException { long count = this.count - position; if (count < 0 || position < 0) { throw new IllegalArgumentException("position out of range: " + position + " (expected: 0 - " + (this.count - 1) + ")"); } if (count == 0) { return 0L; } long bw = file.transferTo(this.position + position, count, target); byteWritten += bw; if (byteWritten == raf.length()) { releaseExternalResources(); } return bw; }
@Override public void write(Channel channel, NettyResponseFuture<?> future, AsyncHttpClientConfig config) throws IOException { final RandomAccessFile raf = new RandomAccessFile(file, "r"); try { ChannelFuture writeFuture; if (ChannelManager.isSslHandlerConfigured(channel.getPipeline()) || nettyConfig.isDisableZeroCopy()) { writeFuture = channel.write(new ChunkedFile(raf, offset, raf.length(), nettyConfig.getChunkedFileChunkSize())); } else { final FileRegion region = new OptimizedFileRegion(raf, offset, raf.length()); writeFuture = channel.write(region); } writeFuture.addListener(new ProgressListener(config, future.getAsyncHandler(), future, false) { public void operationComplete(ChannelFuture cf) { closeSilently(raf); super.operationComplete(cf); } }); } catch (IOException ex) { closeSilently(raf); throw ex; } } }
@Override public void write(Channel channel, NettyResponseFuture<?> future, AsyncHttpClientConfig config) throws IOException { final RandomAccessFile raf = new RandomAccessFile(file, "r"); try { ChannelFuture writeFuture; if (ChannelManager.isSslHandlerConfigured(channel.getPipeline()) || nettyConfig.isDisableZeroCopy()) { writeFuture = channel.write(new ChunkedFile(raf, offset, raf.length(), nettyConfig.getChunkedFileChunkSize())); } else { final FileRegion region = new OptimizedFileRegion(raf, offset, raf.length()); writeFuture = channel.write(region); } writeFuture.addListener(new ProgressListener(config, future.getAsyncHandler(), future, false) { public void operationComplete(ChannelFuture cf) { closeSilently(raf); super.operationComplete(cf); } }); } catch (IOException ex) { closeSilently(raf); throw ex; } } }
public long transferTo(WritableByteChannel target, long position) throws IOException { long count = this.count - position; if (count < 0 || position < 0) { throw new IllegalArgumentException("position out of range: " + position + " (expected: 0 - " + (this.count - 1) + ")"); } if (count == 0) { return 0L; } long bw = file.transferTo(this.position + position, count, target); byteWritten += bw; if (byteWritten == raf.length()) { releaseExternalResources(); } return bw; }