import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
-import java.util.NavigableMap;
import java.util.SortedMap;
import java.util.TreeMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentNavigableMap;
import java.util.concurrent.ConcurrentSkipListMap;
-
-import com.google.common.collect.Sets;
-import io.atomix.utils.serializer.Namespace;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final String name;
private final StorageLevel storageLevel;
private final File directory;
- private final Namespace namespace;
+ private final JournalSerdes namespace;
private final int maxSegmentSize;
private final int maxEntrySize;
private final int maxEntriesPerSegment;
private final SegmentedJournalWriter<E> writer;
private volatile long commitIndex;
- private final NavigableMap<Long, JournalSegment<E>> segments = new ConcurrentSkipListMap<>();
- private final Collection<SegmentedJournalReader<E>> readers = Sets.newConcurrentHashSet();
+ private final ConcurrentNavigableMap<Long, JournalSegment<E>> segments = new ConcurrentSkipListMap<>();
+ private final Collection<SegmentedJournalReader<E>> readers = ConcurrentHashMap.newKeySet();
private JournalSegment<E> currentSegment;
private volatile boolean open = true;
String name,
StorageLevel storageLevel,
File directory,
- Namespace namespace,
+ JournalSerdes namespace,
int maxSegmentSize,
int maxEntrySize,
int maxEntriesPerSegment,
private String name = DEFAULT_NAME;
private StorageLevel storageLevel = StorageLevel.DISK;
private File directory = new File(DEFAULT_DIRECTORY);
- private Namespace namespace;
+ private JournalSerdes namespace;
private int maxSegmentSize = DEFAULT_MAX_SEGMENT_SIZE;
private int maxEntrySize = DEFAULT_MAX_ENTRY_SIZE;
private int maxEntriesPerSegment = DEFAULT_MAX_ENTRIES_PER_SEGMENT;
* @param namespace The journal serializer.
* @return The journal builder.
*/
- public Builder<E> withNamespace(Namespace namespace) {
+ public Builder<E> withNamespace(JournalSerdes namespace) {
this.namespace = requireNonNull(namespace, "namespace cannot be null");
return this;
}
return this;
}
- /**
- * Sets the journal cache size.
- *
- * @param cacheSize the journal cache size
- * @return the journal builder
- * @throws IllegalArgumentException if the cache size is not positive
- * @deprecated since 3.0.4
- */
- @Deprecated
- public Builder<E> withCacheSize(int cacheSize) {
- checkArgument(cacheSize >= 0, "cacheSize must be positive");
- return this;
- }
-
/**
* Enables flushing buffers to disk when entries are committed to a segment, returning the builder for method
* chaining.