private final int maxEntrySize;
private final JournalIndex index;
private final JournalSerdes namespace;
- private final MappableJournalSegmentWriter<E> writer;
private final Set<JournalSegmentReader<E>> readers = ConcurrentHashMap.newKeySet();
private final AtomicInteger references = new AtomicInteger();
private final FileChannel channel;
+
+ private JournalSegmentWriter<E> writer;
private boolean open = true;
JournalSegment(
} catch (IOException e) {
throw new StorageException(e);
}
- writer = new MappableJournalSegmentWriter<>(channel, this, maxEntrySize, index, namespace);
+ writer = new FileChannelJournalSegmentWriter<>(channel, this, maxEntrySize, index, namespace);
}
/**
*/
private void acquire() {
if (references.getAndIncrement() == 0 && storageLevel == StorageLevel.MAPPED) {
- writer.map();
+ writer = writer.toMapped();
}
}
private void release() {
if (references.decrementAndGet() == 0) {
if (storageLevel == StorageLevel.MAPPED) {
- writer.unmap();
+ writer = writer.toFileChannel();
}
if (!open) {
finishClose();
*
* @return The segment writer.
*/
- MappableJournalSegmentWriter<E> acquireWriter() {
+ JournalSegmentWriter<E> acquireWriter() {
checkOpen();
acquire();