@Nullable static SingleChronicleQueueStore loadStore(@NotNull Wire wire) { final StringBuilder eventName = new StringBuilder(); wire.readEventName(eventName); if (eventName.toString().equals(MetaDataKeys.header.name())) { final SingleChronicleQueueStore store = wire.read().typedMarshallable(); if (store == null) { throw new IllegalArgumentException("Unable to load wire store"); } return store; } LOGGER.warn("Unable to load store file from input. Queue file may be corrupted."); return null; }
void readForward(@NotNull ChronicleQueue chronicle, int entries) { ExcerptTailer forwardTailer = chronicle.createTailer() .direction(TailerDirection.FORWARD) .toStart(); for (int i = 0; i < entries; i++) { try (DocumentContext documentContext = forwardTailer.readingDocument()) { Assert.assertTrue(documentContext.isPresent()); Assert.assertEquals(i, RollCycles.DAILY.toSequenceNumber(documentContext.index())); StringBuilder sb = Wires.acquireStringBuilder(); ValueIn valueIn = documentContext.wire().readEventName(sb); Assert.assertTrue("hello".contentEquals(sb)); String actual = valueIn.text(); Assert.assertEquals("world" + i, actual); } } try (DocumentContext documentContext = forwardTailer.readingDocument()) { Assert.assertFalse(documentContext.isPresent()); } }
documentContext.wire().readEventName(sb); Assert.assertEquals("hello", sb.toString()); documentContext.rollbackOnClose(); documentContext.wire().readEventName(sb); Assert.assertEquals("hello", sb.toString()); documentContext.wire().readEventName(sb); documentContext.rollbackOnClose(); Assert.assertEquals("hello2", sb.toString()); documentContext.wire().readEventName(sb); Assert.assertEquals("hello2", sb.toString()); documentContext.rollbackOnClose(); documentContext.wire().readEventName(sb); Assert.assertEquals("hello2", sb.toString()); documentContext.wire().readEventName(sb); Assert.assertEquals("hello3", sb.toString()); documentContext.rollbackOnClose(); documentContext.wire().readEventName(sb); Assert.assertEquals("hello3", sb.toString());
void readBackward(@NotNull ChronicleQueue chronicle, int entries) { ExcerptTailer backwardTailer = chronicle.createTailer() .direction(TailerDirection.BACKWARD) .toEnd(); for (int i = entries - 1; i >= 0; i--) { try (DocumentContext documentContext = backwardTailer.readingDocument()) { assertTrue(documentContext.isPresent()); final long index = documentContext.index(); assertEquals("index: " + index, i, (int) index); Assert.assertEquals(i, RollCycles.DAILY.toSequenceNumber(index)); Assert.assertTrue(documentContext.isPresent()); StringBuilder sb = Wires.acquireStringBuilder(); ValueIn valueIn = documentContext.wire().readEventName(sb); Assert.assertTrue("hello".contentEquals(sb)); String actual = valueIn.text(); Assert.assertEquals("world" + i, actual); } } try (DocumentContext documentContext = backwardTailer.readingDocument()) { assertFalse(documentContext.isPresent()); } }
long readPosition = mappedBytes.readPosition(); int length = Wires.lengthOf(header); ValueIn valueIn = mappedWire.readEventName(sb); if (StringUtils.equalsCaseIgnore(key, sb)) { return valueIn.int64ForBinding(null);
@Nullable static SingleChronicleQueueStore loadStore(@NotNull Wire wire) { final StringBuilder eventName = new StringBuilder(); wire.readEventName(eventName); if (eventName.toString().equals(MetaDataKeys.header.name())) { final SingleChronicleQueueStore store = wire.read().typedMarshallable(); if (store == null) { throw new IllegalArgumentException("Unable to load wire store"); } return store; } LOGGER.warn("Unable to load store file from input. Queue file may be corrupted."); return null; }
@Nullable @Override public Void install(@NotNull String path, @NotNull AssetTree assetTree) throws IOException { @NotNull String uri = path + "?putReturnsNull=" + putReturnsNull + "&removeReturnsNull=" + removeReturnsNull; @NotNull MapView mapView = assetTree.acquireMap(uri, keyType, valueType); if (importFile != null) { @NotNull Wire wire = Wire.fromFile(importFile); @NotNull StringBuilder keyStr = new StringBuilder(); while (!wire.isEmpty()) { @Nullable Object value = wire.readEventName(keyStr).object(valueType); @Nullable Object key = ObjectUtils.convertTo(keyType, keyStr); mapView.put(key, value); } } LOGGER.info("Added InMemoryMap " + path + ", size: " + mapView.size()); return null; }
@Nullable @Override public Excerpt<T, M> getExcerpt(@NotNull T topic) { final ThreadLocalData threadLocalData = threadLocal.get(); @NotNull ExcerptTailer excerptTailer = threadLocalData.replayTailer; for (; ; ) { try (DocumentContext dc = excerptTailer.readingDocument()) { if (!dc.isPresent()) return null; final StringBuilder t = Wires.acquireStringBuilder(); @NotNull final ValueIn valueIn = dc.wire().readEventName(t); @Nullable final T topic1 = convertTo(messageTypeClass, t); if (!topic.equals(topic1)) continue; @Nullable final M message = valueIn.object(elementTypeClass); return threadLocalData.excerpt .message(message) .topic(topic1) .index(excerptTailer.index()); } } }
/** * @param index gets the except at the given index, if index==0 then the first index is * returned * @return the except */ @Nullable @Override public Excerpt<T, M> getExcerpt(long index) { final ThreadLocalData threadLocalData = threadLocal.get(); @NotNull ExcerptTailer excerptTailer = threadLocalData.replayTailer; if (index == 0) excerptTailer.toStart(); else if (!excerptTailer.moveToIndex(index)) return null; try (DocumentContext dc = excerptTailer.readingDocument()) { if (!dc.isPresent()) return null; final StringBuilder topic = Wires.acquireStringBuilder(); @Nullable final M message = dc.wire().readEventName(topic).object(elementTypeClass); return threadLocalData.excerpt .message(message) .topic(convertTo(messageTypeClass, topic)) .index(excerptTailer.index()); } }
@Override public void onConsumer(@NotNull final WireIn inWire) { try (DocumentContext dc = inWire.readingDocument()) { if (!dc.isPresent()) return; final StringBuilder sb = Wires.acquireStringBuilder(); @NotNull final ValueIn valueIn = dc.wire().readEventName(sb); if (reply.contentEquals(sb)) try { @Nullable final IndexedValue<V> e = valueIn.typedMarshallable(); fromIndex = Math.max(fromIndex, e.index()); subscriber.onMessage(e); } catch (InvalidSubscriberException e) { RemoteIndexQueueView.this.unregisterSubscriber(subscriber); } else if (onEndOfSubscription.contentEquals(sb)) { subscriber.onEndOfSubscription(); hub.unsubscribe(tid()); } } catch (Exception e) { Jvm.warn().on(getClass(), e); } } };
long readPosition = mappedBytes.readPosition(); int length = Wires.lengthOf(header); ValueIn valueIn = mappedWire.readEventName(sb); if (StringUtils.equalsCaseIgnore(key, sb)) { return valueIn.int64ForBinding(null);