package org.torrent.internal.io;
import java.io.IOException;
import java.nio.ByteBuffer;
import org.torrent.internal.io.FileMapper.Mapping;
import org.torrent.internal.util.Validator;
public class FileMappedWriter implements DataWriter {
private final FileMapper mapper;
private final FileWriter writer;
public FileMappedWriter(FileMapper mapper, FileWriter writer) {
Validator.nonNull(mapper, writer);
this.mapper = mapper;
this.writer = writer;
}
@Override
public void write(ByteBuffer src, long position) throws IOException {
for (Mapping m : mapper.map(position, src.remaining())) {
src.limit(src.position() + m.getLength());
writer.write(m.getFile(), src, m.getPosition());
}
}
}