limiter.acquire(toTransfer); long lastWrite = fc.transferTo(section.left + bytesTransferred, toTransfer, channel); bytesTransferred += lastWrite;
limiter.acquire(toTransfer); long lastWrite = out.applyToChannel((wbc) -> fc.transferTo(section.left + bytesTransferredFinal, toTransfer, wbc)); bytesTransferred += lastWrite;
limiter.acquire(toTransfer); long lastWrite = out.applyToChannel((wbc) -> fc.transferTo(section.left + bytesTransferredFinal, toTransfer, wbc)); bytesTransferred += lastWrite;
limiter.acquire(toTransfer); long lastWrite = out.applyToChannel((wbc) -> fc.transferTo(section.left + bytesTransferredFinal, toTransfer, wbc)); bytesTransferred += lastWrite;
/** * Sequentially read bytes from the file and write them to the output stream * * @param reader The file reader to read from * @param validator validator to verify data integrity * @param start number of bytes to skip transfer, but include for validation. * @param length The full length that should be read from {@code reader} * @param bytesTransferred Number of bytes already read out of {@code length} * * @return Number of bytes read * * @throws java.io.IOException on any I/O error */ protected long write(RandomAccessReader reader, ChecksumValidator validator, int start, long length, long bytesTransferred) throws IOException { int toTransfer = (int) Math.min(transferBuffer.length, length - bytesTransferred); int minReadable = (int) Math.min(transferBuffer.length, reader.length() - reader.getFilePointer()); reader.readFully(transferBuffer, 0, minReadable); if (validator != null) validator.validate(transferBuffer, 0, minReadable); limiter.acquire(toTransfer - start); compressedOutput.write(transferBuffer, start, (toTransfer - start)); return toTransfer; } }
/** * Sequentially read bytes from the file and write them to the output stream * * @param reader The file reader to read from * @param validator validator to verify data integrity * @param start number of bytes to skip transfer, but include for validation. * @param length The full length that should be read from {@code reader} * @param bytesTransferred Number of bytes already read out of {@code length} * * @return Number of bytes read * * @throws java.io.IOException on any I/O error */ protected long write(RandomAccessReader reader, ChecksumValidator validator, int start, long length, long bytesTransferred) throws IOException { int toTransfer = (int) Math.min(transferBuffer.length, length - bytesTransferred); int minReadable = (int) Math.min(transferBuffer.length, reader.length() - reader.getFilePointer()); reader.readFully(transferBuffer, 0, minReadable); if (validator != null) validator.validate(transferBuffer, 0, minReadable); limiter.acquire(toTransfer - start); compressedOutput.write(transferBuffer, start, (toTransfer - start)); return toTransfer; } }
/** * Sequentially read bytes from the file and write them to the output stream * * @param reader The file reader to read from * @param validator validator to verify data integrity * @param start number of bytes to skip transfer, but include for validation. * @param length The full length that should be read from {@code reader} * @param bytesTransferred Number of bytes already read out of {@code length} * * @return Number of bytes read * * @throws java.io.IOException on any I/O error */ protected long write(RandomAccessReader reader, ChecksumValidator validator, int start, long length, long bytesTransferred) throws IOException { int toTransfer = (int) Math.min(transferBuffer.length, length - bytesTransferred); int minReadable = (int) Math.min(transferBuffer.length, reader.length() - reader.getFilePointer()); reader.readFully(transferBuffer, 0, minReadable); if (validator != null) validator.validate(transferBuffer, 0, minReadable); limiter.acquire(toTransfer - start); compressedOutput.write(transferBuffer, start, (toTransfer - start)); return toTransfer; } }
/** * Sequentially read bytes from the file and write them to the output stream * * @param reader The file reader to read from * @param validator validator to verify data integrity * @param start number of bytes to skip transfer, but include for validation. * @param length The full length that should be read from {@code reader} * @param bytesTransferred Number of bytes already read out of {@code length} * * @return Number of bytes read * * @throws java.io.IOException on any I/O error */ protected long write(RandomAccessReader reader, ChecksumValidator validator, int start, long length, long bytesTransferred) throws IOException { int toTransfer = (int) Math.min(transferBuffer.length, length - bytesTransferred); int minReadable = (int) Math.min(transferBuffer.length, reader.length() - reader.getFilePointer()); reader.readFully(transferBuffer, 0, minReadable); if (validator != null) validator.validate(transferBuffer, 0, minReadable); limiter.acquire(toTransfer - start); compressedOutput.write(transferBuffer, start, (toTransfer - start)); return toTransfer; } }
public StreamRateLimiter(InetAddress peer) { double throughput = ((double) DatabaseDescriptor.getStreamThroughputOutboundMegabitsPerSec()) * BYTES_PER_MEGABIT; mayUpdateThroughput(throughput, limiter); double interDCThroughput = ((double) DatabaseDescriptor.getInterDCStreamThroughputOutboundMegabitsPerSec()) * BYTES_PER_MEGABIT; mayUpdateThroughput(interDCThroughput, interDCLimiter); if (DatabaseDescriptor.getLocalDataCenter() != null && DatabaseDescriptor.getEndpointSnitch() != null) isLocalDC = DatabaseDescriptor.getLocalDataCenter().equals( DatabaseDescriptor.getEndpointSnitch().getDatacenter(peer)); else isLocalDC = true; }
/** * Gets streaming rate limiter. * When stream_throughput_outbound_megabits_per_sec is 0, this returns rate limiter * with the rate of Double.MAX_VALUE bytes per second. * Rate unit is bytes per sec. * * @return StreamRateLimiter with rate limit set based on peer location. */ public static StreamRateLimiter getRateLimiter(InetAddress peer) { return new StreamRateLimiter(peer); }
public StreamRateLimiter(InetAddress peer) { double throughput = DatabaseDescriptor.getStreamThroughputOutboundMegabitsPerSec() * BYTES_PER_MEGABIT; mayUpdateThroughput(throughput, limiter); double interDCThroughput = DatabaseDescriptor.getInterDCStreamThroughputOutboundMegabitsPerSec() * BYTES_PER_MEGABIT; mayUpdateThroughput(interDCThroughput, interDCLimiter); if (DatabaseDescriptor.getLocalDataCenter() != null && DatabaseDescriptor.getEndpointSnitch() != null) isLocalDC = DatabaseDescriptor.getLocalDataCenter().equals( DatabaseDescriptor.getEndpointSnitch().getDatacenter(peer)); else isLocalDC = true; }
public StreamRateLimiter(InetAddress peer) { double throughput = DatabaseDescriptor.getStreamThroughputOutboundMegabitsPerSec() * BYTES_PER_MEGABIT; mayUpdateThroughput(throughput, limiter); double interDCThroughput = DatabaseDescriptor.getInterDCStreamThroughputOutboundMegabitsPerSec() * BYTES_PER_MEGABIT; mayUpdateThroughput(interDCThroughput, interDCLimiter); if (DatabaseDescriptor.getLocalDataCenter() != null && DatabaseDescriptor.getEndpointSnitch() != null) isLocalDC = DatabaseDescriptor.getLocalDataCenter().equals( DatabaseDescriptor.getEndpointSnitch().getDatacenter(peer)); else isLocalDC = true; }
/** * Gets streaming rate limiter. * When stream_throughput_outbound_megabits_per_sec is 0, this returns rate limiter * with the rate of Double.MAX_VALUE bytes per second. * Rate unit is bytes per sec. * * @return StreamRateLimiter with rate limit set based on peer location. */ public static StreamRateLimiter getRateLimiter(InetAddress peer) { return new StreamRateLimiter(peer); }
public StreamRateLimiter(InetAddress peer) { double throughput = DatabaseDescriptor.getStreamThroughputOutboundMegabitsPerSec() * BYTES_PER_MEGABIT; mayUpdateThroughput(throughput, limiter); double interDCThroughput = DatabaseDescriptor.getInterDCStreamThroughputOutboundMegabitsPerSec() * BYTES_PER_MEGABIT; mayUpdateThroughput(interDCThroughput, interDCLimiter); if (DatabaseDescriptor.getLocalDataCenter() != null && DatabaseDescriptor.getEndpointSnitch() != null) isLocalDC = DatabaseDescriptor.getLocalDataCenter().equals( DatabaseDescriptor.getEndpointSnitch().getDatacenter(peer)); else isLocalDC = true; }
/** * Gets streaming rate limiter. * When stream_throughput_outbound_megabits_per_sec is 0, this returns rate limiter * with the rate of Double.MAX_VALUE bytes per second. * Rate unit is bytes per sec. * * @return StreamRateLimiter with rate limit set based on peer location. */ public static StreamRateLimiter getRateLimiter(InetAddress peer) { return new StreamRateLimiter(peer); }
/** * Gets streaming rate limiter. * When stream_throughput_outbound_megabits_per_sec is 0, this returns rate limiter * with the rate of Double.MAX_VALUE bytes per second. * Rate unit is bytes per sec. * * @return StreamRateLimiter with rate limit set based on peer location. */ public static StreamRateLimiter getRateLimiter(InetAddress peer) { return new StreamRateLimiter(peer); }