@Override public boolean hasNext() { return indexTrailer.nextIndex(); }
public void deleteOnExit() { ChronicleTools.deleteOnExit(chronicle.name()); }
@Override public Long offer(@Nonnull T t) { synchronized (monitor) { Buffer buff = codec.apply(t); int len = buff.remaining(); exAppender.startExcerpt(4 + len); exAppender.writeInt(len); exAppender.write(buff.byteBuffer()); exAppender.finish(); size.incrementAndGet(); lastId.set(exAppender.lastWrittenIndex()); } if (LOG.isTraceEnabled()) { LOG.trace("Offered {} to Chronicle at index {}, size {}", t, lastId(), size()); } return lastId(); }
this.deleteOnExit = deleteOnExit; data = config.build(); lastId.set(data.lastWrittenIndex()); if (clearOnStart) { data.clear(); ChronicleTools.warmup(); Excerpt ex = data.createExcerpt(); ex.skip(4); while (ex.nextIndex()) { int len = ex.readInt(); size.incrementAndGet(); ex.skip(len); indexTrailer = data.createTailer(); exTrailer = data.createTailer(); exAppender = data.createAppender();
private ExcerptAppender getExcerpt(int maxSize, MapStream.Operation event) { ExcerptAppender writeExcerpt; try { writeExcerpt = chronicle.createAppender(); } catch (IOException e) { throw new IllegalStateException(e); } writeExcerpt.startExcerpt(maxSize + 2 + event.name().length()); writeExcerpt.writeEnum(event); return writeExcerpt; } }
private void writeValue(ExcerptAppender excerpt, V value) { if (valueCodec == null) { excerpt.writeObject(value); } else { Buffer buff = valueCodec.apply(value); int size = buff.remaining(); excerpt.writeInt(size); excerpt.write(buff.byteBuffer()); } }
protected void writePutAll(Map<? extends K, ? extends V> m) { ExcerptAppender excerpt = getExcerpt(m.size() * messageSizeHint, putAll); long pos = excerpt.position(); excerpt.writeInt(0); // place holder for the actual size. int count = 0; for (Map.Entry<? extends K, ? extends V> entry : m.entrySet()) { K key = entry.getKey(); V value = entry.getValue(); V previous = localCache.put(key, value); if (sameOrNotEqual(previous, value)) { writeKey(excerpt, key); writeValue(excerpt, value); count++; } } excerpt.writeInt(pos, count); excerpt.finish(); }
@Override public void clear() { ExcerptAppender writeExcerpt = getExcerpt(16, clear); writeExcerpt.finish(); }
@Override public PersistentQueue<T> get() { try { return new PersistentQueue<T>(new ChronicleQueuePersistor<T>(basePath, codec, clearOnStart, deleteOnExit, ChronicleQueueBuilder.vanilla(basePath) .indexBlockSize(indexBlockSize) .synchronous(sync) .dataBlockSize(dataBlockSize))); } catch (IOException e) { throw new IllegalStateException(e.getMessage(), e); } }
@Override public T get(Long id) { if (!exTrailer.index(id)) { return null; } return read(exTrailer); }
/** * Create an {@link ChronicleQueuePersistor} based on the given base path. * * @param basePath Directory in which to create the Chronicle. * @throws IOException */ public ChronicleQueuePersistor(@Nonnull String basePath) throws IOException { this(basePath, new JavaSerializationCodec<T>(), false, false, ChronicleQueueBuilder.vanilla(basePath)); }
private VanillaAppender createAppender0() throws IOException { final VanillaAppender appender = new VanillaAppenderImpl(); return !builder.useCheckedExcerpt() ? appender : new VanillaCheckedAppender(appender); }
@Override public Long offerAll(@Nonnull Collection<T> t) { if(t.isEmpty()){ return lastId(); } Function<T, Buffer> encoder = codec; int elasticity = 16; Buffer buff; synchronized (monitor) { long count = 0l; for(T v : t) { buff = encoder.apply(v); int len = buff.remaining(); if(count++ == 0){ exAppender.startExcerpt(4 + elasticity*t.size()*len); } exAppender.writeInt(len); exAppender.write(buff.byteBuffer()); size.incrementAndGet(); } lastId.set(exAppender.lastWrittenIndex()); exAppender.finish(); } if (LOG.isTraceEnabled()) { LOG.trace("Offered {} to Chronicle at index {}, size {}", t, lastId(), size()); } return lastId(); }
private void writeKey(ExcerptAppender excerpt, K key) { if (keyCodec == null) { excerpt.writeObject(key); } else { Buffer buff = keyCodec.apply(key); int size = buff.remaining(); excerpt.writeInt(size); excerpt.write(buff.byteBuffer()); } }
@SuppressWarnings("unchecked") protected void writeRemove(Object key) { ExcerptAppender excerpt = getExcerpt(messageSizeHint, remove); writeKey(excerpt, (K) key); excerpt.finish(); }
protected void writePut(K key, V previous, V value) { ExcerptAppender excerpt = getExcerpt(messageSizeHint, put); writeKey(excerpt, key); writeValue(excerpt, value); excerpt.finish(); }