@Nullable public static MessageHistory readHistory(final DocumentContext dc, MessageHistory history) { final Wire wire = dc.wire(); if (wire == null) return null; Object parent = wire.parent(); wire.parent(null); try { final Bytes<?> bytes = wire.bytes(); final byte code = bytes.readByte(bytes.readPosition()); history.reset(); return code == (byte) FIELD_NUMBER ? readHistoryFromBytes(wire, history) : readHistoryFromWire(wire, history); } finally { wire.parent(parent); } }
public static void main(String[] args) { SingleChronicleQueue outQueue = SingleChronicleQueueBuilder.binary("target/" + "monitor") .rollCycle(RollCycles.TEST_SECONDLY).build(); ExcerptAppender outQueueAppender = outQueue.acquireAppender(); HeartbeatListener heartbeatWriter = outQueueAppender.methodWriterBuilder(HeartbeatListener.class).methodWriterListener((m, a) -> validateAll(a)).recordHistory(true).build(); Monitor.addPeriodicUpdateSource(10, () -> currentTimeMillis -> { outQueueAppender.pretouch(); }); long lastHB = 0; while (true) { if (System.currentTimeMillis() - lastHB > 1) { // write a hb to the queue MessageHistory.get().reset(); Heartbeat heartBeat = new Heartbeat(UUID.randomUUID().toString()); heartbeatWriter.heartbeat(heartBeat); lastHB = System.currentTimeMillis(); } } }
@Nullable public static MessageHistory readHistory(final DocumentContext dc, MessageHistory history) { final Wire wire = dc.wire(); if (wire == null) return null; Object parent = wire.parent(); wire.parent(null); try { final Bytes<?> bytes = wire.bytes(); final byte code = bytes.readByte(bytes.readPosition()); history.reset(); return code == (byte) FIELD_NUMBER ? readHistoryFromBytes(wire, history) : readHistoryFromWire(wire, history); } finally { wire.parent(parent); } }