本文整理汇总了Java中org.apache.cassandra.io.util.RandomAccessReader.getChannel方法的典型用法代码示例。如果您正苦于以下问题:Java RandomAccessReader.getChannel方法的具体用法?Java RandomAccessReader.getChannel怎么用?Java RandomAccessReader.getChannel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.cassandra.io.util.RandomAccessReader
的用法示例。
在下文中一共展示了RandomAccessReader.getChannel方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: write
import org.apache.cassandra.io.util.RandomAccessReader; //导入方法依赖的package包/类
@Override
public void write(WritableByteChannel channel) throws IOException
{
long totalSize = totalSize();
RandomAccessReader file = sstable.openDataReader();
FileChannel fc = file.getChannel();
long progress = 0L;
// calculate chunks to transfer. we want to send continuous chunks altogether.
List<Pair<Long, Long>> sections = getTransferSections(compressionInfo.chunks);
try
{
// stream each of the required sections of the file
for (Pair<Long, Long> section : sections)
{
// length of the section to stream
long length = section.right - section.left;
// tracks write progress
long bytesTransferred = 0;
while (bytesTransferred < length)
{
int toTransfer = (int) Math.min(CHUNK_SIZE, length - bytesTransferred);
limiter.acquire(toTransfer);
long lastWrite = fc.transferTo(section.left + bytesTransferred, toTransfer, channel);
bytesTransferred += lastWrite;
progress += lastWrite;
session.progress(sstable.descriptor, ProgressInfo.Direction.OUT, progress, totalSize);
}
}
}
finally
{
// no matter what happens close file
FileUtils.closeQuietly(file);
}
}
示例2: write
import org.apache.cassandra.io.util.RandomAccessReader; //导入方法依赖的package包/类
@Override
public void write(WritableByteChannel channel) throws IOException
{
long totalSize = totalSize();
RandomAccessReader file = sstable.openDataReader();
FileChannel fc = file.getChannel();
long progress = 0L;
// calculate chunks to transfer. we want to send continuous chunks altogether.
List<Pair<Long, Long>> sections = getTransferSections(compressionInfo.chunks);
try
{
// stream each of the required sections of the file
for (Pair<Long, Long> section : sections)
{
// length of the section to stream
long length = section.right - section.left;
// tracks write progress
long bytesTransferred = 0;
while (bytesTransferred < length)
{
int toTransfer = (int) Math.min(CHUNK_SIZE, length - bytesTransferred);
limiter.acquire(toTransfer);
long lastWrite = fc.transferTo(section.left + bytesTransferred, toTransfer, channel);
bytesTransferred += lastWrite;
progress += lastWrite;
session.progress(sstable.descriptor, ProgressInfo.Direction.OUT, progress, totalSize);
}
}
}
finally
{
// no matter what happens close file
FileUtils.closeQuietly(file);
}
sstable.releaseReference();
}