@Override public boolean readDocument(@NotNull ReadMarshallable reader) { try (@NotNull DocumentContext dc = readingDocument(false)) { if (!dc.isPresent()) return false; reader.readMarshallable(dc.wire()); } return true; }
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); } }
private MappedFile toMappedFile(@NotNull DocumentContext documentContext) { MappedFile mappedFile; MappedBytes bytes = (MappedBytes) documentContext.wire().bytes(); mappedFile = bytes.mappedFile(); return mappedFile; }
@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; }
public int fetchOneMessage(@NotNull ExcerptTailer tailer, @NotNull byte[] using) { try (DocumentContext dc = tailer.readingDocument()) { return !dc.isPresent() ? -1 : dc.wire().bytes().read(using); } }
private static Data read(final ExcerptTailer tailer) throws Exception { try (final DocumentContext dc = tailer.readingDocument()) { if (!dc.isPresent()) { return null; } final ObjectInput in = dc.wire().objectInput(); return new Data(in.readInt()); } }
@Override public void run(long startTimeNS) { datum.ts = startTimeNS; try (DocumentContext dc = appender.writingDocument()) { datum.writeMarshallable(dc.wire().bytes()); } }
private void readDocument(@NotNull ThreadLocal<ExcerptTailer> tlt, String text) { try (DocumentContext dc = tlt.get().readingDocument()) { if (!dc.isPresent()) return; Assert.assertEquals(dc.index(), dc.wire().read(() -> "key").int64()); Assert.assertEquals(text, dc.wire().read(() -> "text").text()); } }
@NotNull private Wire toWire(int key) { final MyData myData = new MyData(); myData.key = key; myData.value = Integer.toString(key); Wire result = WireType.BINARY.apply(Bytes.elasticByteBuffer()); try (final DocumentContext dc = result.writingDocument()) { dc.wire().getValueOut().typedMarshallable(myData); } return result; }
private void appendToQueue(final ChronicleQueue queue) { for (int i = 0; i < 31; i++) { final ExcerptAppender appender = queue.acquireAppender(); if (queue.isClosed()) return; try (final DocumentContext dc = appender.writingDocument()) { dc.wire().write("foo"); } } }
private static void expected(@NotNull ExcerptTailer tailer, String expected) { try (DocumentContext dc = tailer.readingDocument()) { assertTrue("No document found", dc.isPresent()); Bytes bytes2 = Bytes.elasticHeapByteBuffer(128); dc.wire().copyTo(new TextWire(bytes2)); assertEquals(expected, bytes2.toString()); } }
@Test public void testCheckIndexWithWritingDocument() { doTestCheckIndex( (appender, n) -> { try (final DocumentContext dc = appender.writingDocument()) { dc.wire().writeEventName("").object("" + n); } }); }
private BytesWithIndex bytes(final ExcerptTailer tailer) { try (DocumentContext dc = tailer.readingDocument()) { if (!dc.isPresent()) return null; Bytes<?> bytes = dc.wire().bytes(); long index = dc.index(); return new BytesWithIndex(bytes, index); } }
private static void expectValue(final int expectedValue, final ExcerptTailer tailer) { try (final DocumentContext documentContext = tailer.readingDocument()) { assertTrue(documentContext.isPresent()); assertEquals(expectedValue, documentContext.wire().getValueIn().int32()); } }
@Test public void tailerRollBackTest() { final File source = DirectoryUtils.tempDir("testCopyQueue-source"); try (final ChronicleQueue q = binary(source).build()) { try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("hello").text("hello-world"); } try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("hello2").text("hello-world-2"); } } }
@Test public void testCheckIndexWithWritingDocument2() { doTestCheckIndex( (appender, n) -> { try (final DocumentContext dc = appender.writingDocument()) { dc.wire().bytes().writeUtf8("Hello") .writeStopBit(12345) .writeStopBit(1.2) // float also supported. .writeInt(1); } }); }
private void createQueueAndWriteData(TimeProvider timeProvider, File path) { final ChronicleQueue queue = SingleChronicleQueueBuilder .binary(path) .testBlockSize() .rollCycle(RollCycles.TEST_DAILY) .timeProvider(timeProvider) .build(); ExcerptAppender excerptAppender = queue.acquireAppender(); try (DocumentContext dc = excerptAppender.writingDocument(false)) { dc.wire().write(() -> "test").int64(0); } } }
@Test(expected = IllegalStateException.class) public void shouldBlowUpIfTryingToCreateQueueWithUnparseableRollCycle() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType).rollCycle(new RollCycleDefaultingTest.MyRollcycle()).build()) { try (DocumentContext documentContext = queue.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } try (final ChronicleQueue ignored = builder(tmpDir, wireType).rollCycle(HOURLY).build()) { } }
@Test public void shouldOverrideDifferentEpoch() { File tmpDir = getTmpDir(); try (final ChronicleQueue queue = builder(tmpDir, wireType).rollCycle(TEST_SECONDLY).epoch(100).build()) { try (DocumentContext documentContext = queue.acquireAppender().writingDocument()) { documentContext.wire().write("somekey").text("somevalue"); } } try (final ChronicleQueue ignored = builder(tmpDir, wireType).rollCycle(TEST_SECONDLY).epoch(10).build()) { assertEquals(100, ((SingleChronicleQueue) ignored).epoch()); } }