/** * Read next message, forward or backward, depending on the settings of the Tailer * * @param tailer ExcerptTailer * @return entry or null, if no entry available */ private String readNextEntry(@NotNull final ExcerptTailer tailer) { DocumentContext dc = tailer.readingDocument(); try { if (dc.isPresent()) { Object parent = dc.wire().parent(); assert parent == tailer; return dc.wire().read().text(); } return null; } finally { dc.close(); } }
assert dc.isPresent(); assert dc.isData(); dc.wire().read(() -> "key").text(sb); Assert.assertEquals("value=0", sb.toString()); assert dc.isPresent(); assert dc.isData(); dc.wire().read(() -> "key").text(sb); Assert.assertEquals("value=1", sb.toString()); assert dc.isPresent(); assert dc.isData(); dc.wire().read(() -> "key").text(sb); Assert.assertEquals("value=2", sb.toString()); assert dc.isPresent(); assert dc.isData(); dc.wire().read(() -> "key").text(sb); Assert.assertEquals("value=3", sb.toString()); assert dc.isPresent(); assert dc.isData(); dc.wire().read(() -> "key").text(sb); Assert.assertEquals("value=4", sb.toString()); assert !dc.isPresent(); assert !dc.isData(); assert !dc.isMetaData();
/** * Add a test message with the given ExcerptAppender and return the index position of the entry * * @param appender ExceptAppender * @param msg test message * @return index position of the entry */ private long appendEntry(@NotNull final ExcerptAppender appender, String msg) { DocumentContext dc = appender.writingDocument(); try { dc.wire().write().text(msg); return dc.index(); } finally { dc.close(); } }
private static void write(final ExcerptAppender appender, final Data data) throws Exception { try (final DocumentContext dc = appender.writingDocument()) { final ObjectOutput out = dc.wire().objectOutput(); out.writeInt(data.id); } }
assertTrue(context.isPresent()); clock.addAndGet(TimeUnit.SECONDS.toMillis(2)); assertFalse(tailer.readingDocument().isPresent()); assertTrue(context.isPresent()); while (true) { final DocumentContext context = newTailer.readingDocument(); if (context.isPresent() && context.isData()) { assertTrue(context.wire().read().int32() != 0); totalCount++; } else if (!context.isPresent()) { break;
@Override public DocumentContext apply(final ExcerptTailer excerptTailer) { final DocumentContext documentContext = excerptTailer.readingDocument(); if (!documentContext.isPresent()) { invocationCount++; if (invocationCount >= maxPollsReturningEmptyDocument) { throw new ArithmeticException("For testing purposes"); } } return documentContext; } }
@Override public boolean action() throws InvalidEventHandlerException, InterruptedException { try { if (tailer == null) { tailer = rollingChronicleQueue.createTailer(); if (index > 0) tailer.moveToIndex(index); tailer.readingDocument(false).close(); } try (DocumentContext documentContext = tailer.readingDocument(false)) { if (!documentContext.isPresent()) return false; StringBuilder sb = Wires.acquireStringBuilder(); @NotNull ValueIn valueIn = documentContext.wire().read(sb); if ("NetworkStats".contentEquals(sb)) { valueIn.marshallable(ns); final String userId = ns.userId(); if (userId != null && !userId.isEmpty()) { updateMap(ns, documentContext.index()); } } } return true; } catch (Throwable t) { t.printStackTrace(); return true; } }
dc.wire().write(() -> "FirstName").text("Quartilla"); dc.wire().write(() -> "FirstName").text("Rob"); dc.wire().write(() -> "FirstName").text("Steve"); while (true) { try (DocumentContext dc = tailer.readingDocument(true)) { assertTrue(dc.isMetaData()); ValueIn in = dc.wire().read(event); assertTrue(dc.isData()); robIndex = dc.index(); dc.wire().read(() -> "FirstName").text("Rob", Assert::assertEquals); assertTrue(dc.isMetaData()); ValueIn in = dc.wire().read(event); if (!StringUtils.isEqual(event, "FirstName")) continue; assertTrue(dc.isData()); dc.wire().read(() -> "FirstName").text("Rob", Assert::assertEquals);
dc.wire().write("hello").text("world1"); dc.wire().write("hello2").text("world2"); dc.wire().write("hello3").text("world3"); 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()); Bytes<?> bytes = documentContext.wire().bytes(); long rp = bytes.readPosition(); long wp = bytes.writePosition(); documentContext.wire().readEventName(sb); Assert.assertEquals("hello2", sb.toString()); documentContext.rollbackOnClose(); } finally { bytes.readPosition(rp).writePosition(wp).writeLimit(wl); documentContext.wire().readEventName(sb); Assert.assertEquals("hello2", sb.toString());
/** * @param marshallable to write to excerpt. */ @Override public void writeBytes(@NotNull WriteBytesMarshallable marshallable) throws UnrecoverableTimeoutException { try (DocumentContext dc = writingDocument()) { Bytes<?> bytes = dc.wire().bytes(); long wp = bytes.writePosition(); marshallable.writeMarshallable(bytes); if (wp == bytes.writePosition()) dc.rollbackOnClose(); else if (padToCacheAlignMode() == Padding.WORD) ((StoreAppenderContext) dc).padToWordAlign = true; else if (padToCacheAlignMode() != Padding.CACHE_LINE) ((StoreAppenderContext) dc).padToCacheAlign = false; } }
documentContext.wire().getValueOut().text("one"); documentContext.wire().getValueOut().text("two"); documentContext.wire().getValueOut().text("meta1"); documentContext.wire().getValueOut().text("three"); documentContext.wire().getValueOut().text("meta2"); documentContext.wire().getValueOut().text("meta3"); documentContext.wire().getValueOut().text("four"); Assert.assertEquals(0, toSeq(q, documentContext2.index())); Assert.assertEquals(false, documentContext2.isMetaData()); Assert.assertEquals("one", documentContext2.wire().getValueIn().text()); Assert.assertEquals(1, toSeq(q, documentContext2.index())); Assert.assertEquals(false, documentContext2.isMetaData()); Assert.assertEquals("two", documentContext2.wire().getValueIn().text()); Assert.assertEquals(2, toSeq(q, documentContext2.index())); Assert.assertEquals(true, documentContext2.isMetaData()); Assert.assertEquals("meta1", documentContext2.wire().getValueIn().text()); Assert.assertEquals(2, toSeq(q, documentContext2.index())); Assert.assertEquals(false, documentContext2.isMetaData()); Assert.assertEquals("three", documentContext2.wire().getValueIn().text());
Wire inWire = dc.wire(); if (dc.isMetaData()) { if (!readMeta(inWire)) return; "YAML\n"); if (dc.isData() && !inWire.bytes().isEmpty()) handler.onRead(inWire, outWire); } catch (Throwable e) { Jvm.warn().on(getClass(), "failed to parse:" + dc.wire().readingPeekYaml(), e);
@Test public void testAppenderFullFs() throws Exception { ChronicleQueue queue = SingleChronicleQueueBuilder.binary(basePath) .blockSize(256 << 1000) .rollCycle(RollCycles.DAILY) .build(); ExcerptAppender appender = queue.acquireAppender(); byte[] payload = new byte[1024]; Random r = new Random(); r.nextBytes(payload); final LocalDateTime now = LocalDateTime.now(Clock.systemUTC()); for (int i = 0; i < 1024 * 200; i++) { DocumentContext dc = appender.writingDocument(); try { Wire w = dc.wire(); w.write().dateTime(now); w.write().bytes(payload); } finally { dc.close(); } } }
wd.rollbackOnClose(); wd.close();
if (inDc.isMetaData()) { this.metaDataConsumer.readMarshallable(in); } else {
@NotNull private List<Integer> fillResults(@NotNull ExcerptTailer tailer, @NotNull List<Integer> results) { for (int i = 0; i < 10; i++) { try (DocumentContext documentContext = tailer.readingDocument()) { if (!documentContext.isPresent()) break; results.add(documentContext.wire().read(() -> "msg").int32()); } } return results; }