@Override public boolean action() throws InvalidEventHandlerException, InterruptedException { if (isClosed()) { Closeable.closeQuietly(serviceImpl); Closeable.closeQuietly(serviceIn); Closeable.closeQuietly(outputQueue); Closeable.closeQuietly(inputQueues); throw new InvalidEventHandlerException(); } boolean busy = false; for (MethodReader reader : serviceIn) { busy |= reader.readOne(); } return busy; }
@NotNull public MethodReader outputReader(Object... impls) { ChronicleQueue queue = outputQueue(); MethodReader reader = queue.createTailer().methodReader(impls); reader.closeIn(true); return reader; }
private void generateTestData(final ChronicleQueue inputQueue, final ChronicleQueue outputQueue) { final First first = inputQueue.acquireAppender(). methodWriterBuilder(First.class).recordHistory(true).build(); first.say("one"); first.say("two"); first.say("three"); final LoggingFirst loggingFirst = new LoggingFirst(outputQueue.acquireAppender(). methodWriterBuilder(Second.class).build()); final MethodReader reader = inputQueue.createTailer(). methodReaderBuilder().build(loggingFirst); assertThat(reader.readOne(), is(true)); assertThat(reader.readOne(), is(true)); // roll queue file clock.addAndGet(TimeUnit.DAYS.toMillis(2)); assertThat(reader.readOne(), is(true)); assertThat(reader.readOne(), is(false)); }
@NotNull public MethodReader outputReader(Object... impls) { ChronicleQueue queue = outputQueue(); MethodReader reader = queue.createTailer().methodReader(impls); reader.closeIn(true); return reader; }
void runLoop() { try { JDBCResult result = out.acquireAppender() .methodWriterBuilder(JDBCResult.class) .recordHistory(true) .get(); JDBCComponent js = new JDBCComponent(connectionSupplier, result); MethodReader reader = in.createTailer().afterLastWritten(out).methodReader(js); Pauser pauser = Pauser.millis(1, 10); while (!closed) { if (reader.readOne()) pauser.reset(); else pauser.pause(); } } catch (Throwable t) { LOGGER.warn("Run loop exited", t); } }
@Test public void shouldAccessMessageHistory() throws Exception { try (final ChronicleQueue inputQueue = createQueue(inputQueueDir, 1); final ChronicleQueue outputQueue = createQueue(outputQueueDir, 2)) { generateTestData(inputQueue, outputQueue); final ExcerptTailer tailer = outputQueue.createTailer(); final ValidatingSecond validatingSecond = new ValidatingSecond(); final MethodReader validator = tailer.methodReader(validatingSecond); assertThat(validator.readOne(), is(true)); assertThat(validatingSecond.messageHistoryPresent(), is(true)); } }
int counter = 0; while (updates.get() < noUpdates) { if (methodReader.readOne()) counter++; else
@Test public void test() { File file = getTmpDir(); try (ChronicleQueue queue = ChronicleQueue.singleBuilder(file) .testBlockSize() .rollCycle(TEST_DAILY).build()) { SomeListener someListener = queue.acquireAppender().methodWriter(SomeListener.class); SomeManager someManager = new SomeManager(); MethodReader reader = queue.createTailer().methodReader(someManager); LOG.debug("Writing to queue"); someListener.methodWithOneParam(1); someListener.methodWithoutParams(); LOG.debug("Reading from queue"); assertTrue(reader.readOne()); assertTrue(reader.readOne()); assertFalse(reader.readOne()); assertTrue(someManager.methodWithOneParamInvoked); // one param method was invoked assertTrue(someManager.methodWithoutParamsInvoked); // no params method was NOT invoked LOG.warn(queue.dump()); } }
methodReader.readOne(); methodReader.readOne(); Assert.assertFalse(methodReader.readOne()); Assert.assertFalse(methodReader.readOne()); MethodReader methodReader = excerptTailer.methodReader((Msg) actualValue::set); methodReader.readOne(); Assert.assertEquals("somedata-2", actualValue.get()); methodReader.readOne(); Assert.assertEquals("somedata-3", actualValue.get()); methodReader.readOne(); Assert.assertEquals("somedata-4", actualValue.get()); Assert.assertFalse(methodReader.readOne());
while (!replyReader.readOne()) { Thread.yield();
@Test public void shouldAccessMessageHistoryWhenTailerIsMovedToEnd() throws Exception { try (final ChronicleQueue inputQueue = createQueue(inputQueueDir, 1); final ChronicleQueue outputQueue = createQueue(outputQueueDir, 2)) { generateTestData(inputQueue, outputQueue); final ExcerptTailer tailer = outputQueue.createTailer(); tailer.direction(TailerDirection.BACKWARD).toEnd(); final ValidatingSecond validatingSecond = new ValidatingSecond(); final MethodReader validator = tailer.methodReader(validatingSecond); assertThat(validator.readOne(), is(true)); assertThat(validatingSecond.messageHistoryPresent(), is(true)); } }
methodReader.readOne();
(Pinger) pingDTO -> sb.append("ping ").append(pingDTO)); assertEquals(PingDTO.constructionExpected, PingDTO.constructionCounter); while (reader.readOne()) ; assertEquals("ping !PingDTO {\n" + " bytes: \"\"\n" +
methodReader.readOne(); methodReader.readOne(); MethodReader methodReader = excerptTailer.methodReader((Msg) actualValue::set); methodReader.readOne(); Assert.assertEquals("somedata-2", actualValue.get()); methodReader.readOne(); Assert.assertEquals("somedata-3", actualValue.get()); methodReader.readOne(); Assert.assertEquals("somedata-4", actualValue.get());
assertTrue(reader.readOne()); assertEquals(1, names.size()); assertEquals(person1.name, names.get(0)); assertFalse(reader.readOne()); assertFalse(reader.readOne()); assertEquals("queue should be unchanged by the failed write", cleanedQueueDump, dump); assertFalse(reader.readOne()); assertTrue(reader.readOne()); assertEquals(2, names.size()); assertEquals(person2.name, names.get(1)); assertFalse(reader.readOne());