private boolean open = true;
JournalSegment(
- JournalSegmentFile file,
- JournalSegmentDescriptor descriptor,
- StorageLevel storageLevel,
- int maxEntrySize,
- double indexDensity) {
+ final JournalSegmentFile file,
+ final JournalSegmentDescriptor descriptor,
+ final StorageLevel storageLevel,
+ final int maxEntrySize,
+ final double indexDensity) {
this.file = file;
this.descriptor = descriptor;
this.storageLevel = storageLevel;
} catch (IOException e) {
throw new StorageException(e);
}
- writer = switch (storageLevel) {
- case DISK -> new DiskJournalSegmentWriter(channel, this, maxEntrySize, journalIndex);
- case MAPPED -> new MappedJournalSegmentWriter(channel, this, maxEntrySize, journalIndex).toFileChannel();
+
+ final var fileWriter = switch (storageLevel) {
+ case DISK -> new DiskFileWriter(file.file().toPath(), channel, descriptor.maxSegmentSize(), maxEntrySize);
+ case MAPPED -> new MappedFileWriter(file.file().toPath(), channel, descriptor.maxSegmentSize(), maxEntrySize);
};
+ writer = new JournalSegmentWriter(fileWriter, this, maxEntrySize, journalIndex)
+ // relinquish mapped memory
+ .toFileChannel();
}
/**
* @param index the index to lookup
* @return the position of the given index or a lesser index, or {@code null}
*/
- @Nullable Position lookup(long index) {
+ @Nullable Position lookup(final long index) {
return journalIndex.lookup(index);
}