private static void readMessage(final ChronicleQueue queue, final boolean manuallyReleaseResources, final Consumer<ExcerptTailer> refHolder) { final Bytes<ByteBuffer> bytes = Bytes.elasticByteBuffer(); try { final ExcerptTailer tailer = queue.createTailer(); while (bytes.isEmpty()) { tailer.toStart().readBytes(bytes); } refHolder.accept(tailer); assertThat(Math.signum(bytes.readInt()) >= 0, is(true)); if (manuallyReleaseResources) { try { ((SingleChronicleQueueExcerpts.StoreTailer) tailer).releaseResources(); } catch (RuntimeException e) { // ignore } } } finally { bytes.release(); } }
if (tailer.readBytes(bytes)) counter.incrementAndGet();
Bytes b = Bytes.elasticHeapByteBuffer(128); final ExcerptTailer tailer = queue.createTailer(); tailer.readBytes(b); if (b.readRemaining() == 0) return;
@Test public void testSimpleByteTest() { assumeFalse(Jvm.isArm()); try (final ChronicleQueue chronicle = builder(getTmpDir(), wireType) .rollCycle(TEST2_DAILY) .build()) { final ExcerptAppender appender = chronicle.acquireAppender(); Bytes steve = Bytes.allocateDirect("Steve".getBytes()); appender.writeBytes(steve); Bytes jobs = Bytes.allocateDirect("Jobs".getBytes()); appender.writeBytes(jobs); final ExcerptTailer tailer = chronicle.createTailer(); Bytes bytes = Bytes.elasticByteBuffer(); try { tailer.readBytes(bytes); Assert.assertEquals("Steve", bytes.toString()); bytes.clear(); tailer.readBytes(bytes); Assert.assertEquals("Jobs", bytes.toString()); } finally { steve.release(); jobs.release(); bytes.release(); } } }
@Test public void shouldWriteBytes() throws IOException { try (final ChronicleQueue queue = SingleChronicleQueueBuilder. binary(tmpDir.newFolder()).testBlockSize().build()) { final ExcerptAppender appender = queue.acquireAppender(); final HeapBytesStore<ByteBuffer> store = HeapBytesStore.uninitialized(); store.init(ByteBuffer.wrap(PAYLOAD)); appender.writeBytes(store); final ExcerptTailer tailer = queue.createTailer(); final HeapBytesStore<byte[]> copy = HeapBytesStore.uninitialized(); copy.init(new byte[4]); tailer.readBytes(copy.bytesForWrite()); assertTrue(Arrays.equals(PAYLOAD, copy.underlyingObject())); } } }
@Test//(timeout = 5000) public void testTailerReadingEmptyQueue() { assumeFalse(Jvm.isArm()); final File path = DirectoryUtils.tempDir("testTailerReadingEmptyQueue"); final ChronicleQueue rqueue = SingleChronicleQueueBuilder.fieldlessBinary(path) .testBlockSize() .rollCycle(TEST_DAILY) .build(); final ExcerptTailer tailer = rqueue.createTailer(); final ChronicleQueue wqueue = SingleChronicleQueueBuilder.fieldlessBinary(path) .testBlockSize() .rollCycle(TEST_DAILY) .build(); Bytes bytes = Bytes.elasticByteBuffer(); assertFalse(tailer.readBytes(bytes)); final ExcerptAppender appender = wqueue.acquireAppender(); appender.writeBytes(Bytes.wrapForRead("Hello World".getBytes(ISO_8859_1))); bytes.clear(); assertTrue(tailer.readBytes(bytes)); assertEquals("Hello World", bytes.toString()); bytes.release(); }
@Test public void testReadingLessBytesThanWritten() { try (final ChronicleQueue queue = builder(getTmpDir(), wireType) .build()) { final ExcerptAppender appender = queue.acquireAppender(); final Bytes<byte[]> expected = Bytes.wrapForRead("some long message".getBytes(ISO_8859_1)); for (int i = 0; i < 10; i++) { appender.writeBytes(expected); } final ExcerptTailer tailer = queue.createTailer(); // Sequential read for (int i = 0; i < 10; i++) { Bytes b = Bytes.allocateDirect(8); tailer.readBytes(b); Assert.assertEquals(expected.readInt(0), b.readInt(0)); b.release(); } } }
boolean hasNext; do { hasNext = offsetTailer.readBytes(b -> { int queue = b.readInt(); long off = b.readLong();