@Override public CloseableIterator<ReadItem, DurableDataLogException> getReader() throws DurableDataLogException { ensurePreconditions(); return new ReadResultIterator(this.entries.iterator()); }
@Override public SegmentProperties getStreamSegmentInfo(String streamSegmentName) throws StreamSegmentNotExistsException { ensurePreconditions(); return getStreamSegmentData(streamSegmentName).getInfo(); }
@Override public SegmentHandle openWrite(String streamSegmentName) throws StreamSegmentNotExistsException { ensurePreconditions(); return getStreamSegmentData(streamSegmentName).openWrite(); }
@Override public StorageFactory createFactory(ConfigSetup setup, ScheduledExecutorService executor) { InMemoryStorageFactory factory = new InMemoryStorageFactory(executor); return factory; }
@Override protected Storage createStorage() { return wrap(new InMemoryStorage()); } }
@Override public void disable() throws DurableDataLogException { ensurePreconditions(); synchronized (this.entries) { this.entries.disable(this.clientId); } close(); }
@Override public SegmentHandle openRead(String streamSegmentName) throws StreamSegmentNotExistsException { ensurePreconditions(); return getStreamSegmentData(streamSegmentName).openRead(); }
@Override public int read(SegmentHandle handle, long offset, byte[] buffer, int bufferOffset, int length) throws StreamSegmentNotExistsException { ensurePreconditions(); return getStreamSegmentData(handle.getSegmentName()).read(offset, buffer, bufferOffset, length); }
@Override public void unseal(SegmentHandle handle) throws StreamSegmentException { ensurePreconditions(); getStreamSegmentData(handle.getSegmentName()).markUnsealed(); }
@Override protected Storage createStorage() { return InMemoryStorageFactory.newStorage(executorService()); }
@Override protected DurableDataLog createDurableDataLog(Object sharedContext) { Preconditions.checkArgument(sharedContext instanceof InMemoryDurableDataLog.EntryCollection); return new InMemoryDurableDataLog((InMemoryDurableDataLog.EntryCollection) sharedContext, executorService()); }
void write(long startOffset, InputStream data, int length) throws BadOffsetException, StreamSegmentSealedException { synchronized (this.lock) { checkOpened(); writeInternal(startOffset, data, length); } }
void markSealed() { synchronized (this.lock) { checkOpened(); this.sealed = true; } }
@Override public void close() { if (!this.closed) { try { this.entries.releaseLock(this.clientId); } catch (DataLogWriterNotPrimaryException ex) { // Nothing. Just let it go. } this.closed = true; } }
@Override public boolean equals(Object other) { if (other instanceof InMemoryLogAddress) { return this.getSequence() == ((InMemoryLogAddress) other).getSequence(); } return false; } }
@Override public long getEpoch() { ensurePreconditions(); synchronized (this.entries) { return this.epoch; } }
@Override protected Cache createCache(String cacheId) { return this.factory.getCache(cacheId); } }
void markUnsealed() { synchronized (this.lock) { checkOpened(); this.sealed = false; } }