*
* @author <a href="http://github.com/kuujo">Jordan Halterman</a>
*/
-final class JournalSegment<E> implements AutoCloseable {
+final class JournalSegment implements AutoCloseable {
private final JournalSegmentFile file;
private final JournalSegmentDescriptor descriptor;
private final StorageLevel storageLevel;
private final int maxEntrySize;
private final JournalIndex journalIndex;
- private final JournalSerdes namespace;
- private final Set<JournalSegmentReader<E>> readers = ConcurrentHashMap.newKeySet();
+ private final Set<JournalSegmentReader> readers = ConcurrentHashMap.newKeySet();
private final AtomicInteger references = new AtomicInteger();
private final FileChannel channel;
- private JournalSegmentWriter<E> writer;
+ private JournalSegmentWriter writer;
private boolean open = true;
JournalSegment(
JournalSegmentDescriptor descriptor,
StorageLevel storageLevel,
int maxEntrySize,
- double indexDensity,
- JournalSerdes namespace) {
+ double indexDensity) {
this.file = file;
this.descriptor = descriptor;
this.storageLevel = storageLevel;
this.maxEntrySize = maxEntrySize;
- this.namespace = namespace;
journalIndex = new SparseJournalIndex(indexDensity);
try {
channel = FileChannel.open(file.file().toPath(),
throw new StorageException(e);
}
writer = switch (storageLevel) {
- case DISK -> new DiskJournalSegmentWriter<>(channel, this, maxEntrySize, journalIndex, namespace);
- case MAPPED -> new MappedJournalSegmentWriter<>(channel, this, maxEntrySize, journalIndex, namespace)
- .toFileChannel();
+ case DISK -> new DiskJournalSegmentWriter(channel, this, maxEntrySize, journalIndex);
+ case MAPPED -> new MappedJournalSegmentWriter(channel, this, maxEntrySize, journalIndex).toFileChannel();
};
}
*
* @return The segment writer.
*/
- JournalSegmentWriter<E> acquireWriter() {
+ JournalSegmentWriter acquireWriter() {
checkOpen();
acquire();
*
* @return A new segment reader.
*/
- JournalSegmentReader<E> createReader() {
+ JournalSegmentReader createReader() {
checkOpen();
acquire();
final var path = file.file().toPath();
final var fileReader = buffer != null ? new MappedFileReader(path, buffer)
: new DiskFileReader(path, channel, descriptor.maxSegmentSize(), maxEntrySize);
- final var reader = new JournalSegmentReader<>(this, fileReader, maxEntrySize, namespace);
+ final var reader = new JournalSegmentReader(this, fileReader, maxEntrySize);
reader.setPosition(JournalSegmentDescriptor.BYTES);
readers.add(reader);
return reader;
*
* @param reader the closed segment reader
*/
- void closeReader(JournalSegmentReader<E> reader) {
+ void closeReader(JournalSegmentReader reader) {
if (readers.remove(reader)) {
release();
}