@NotNull private TableStore<T> writeTableStore(MappedBytes bytes, Wire wire, StoreRecovery recovery) { TableStore<T> store = new SingleTableStore<>(wireType, bytes, recovery, metadata); wire.writeEventName("header").object(store); wire.updateFirstHeader(); return store; }
@Override public void writeMarshallable(@NotNull WireOut wire) { wire .write(MetaDataField.wireType).object(wireType) .write(MetaDataField.recovery).typedMarshallable(recovery); if (metadata != Metadata.NoMeta.INSTANCE) wire.write(MetaDataField.metadata).typedMarshallable(this.metadata); // align to a word whether needed or not as a micro-optimisation. wire.writeAlignTo(Integer.BYTES, 0); }
@Test public void testRandomMove() throws Exception { final Map<Long, String> messageByIndex = new HashMap<>(); try (ChronicleQueue queue = SingleChronicleQueueBuilder. binary(tmpFolder.newFolder()).build()) { // create a queue and add some excerpts final ExcerptAppender appender = queue.acquireAppender(); for (int i = 0; i < 10; i++) { final String message = "msg" + i; appender.writeDocument(w -> w.write("message").object(message)); final long appendIndex = appender.lastIndexAppended(); messageByIndex.put(appendIndex, message); } final Random random = new Random(1510298038000L); final List<Long> indices = new ArrayList<>(messageByIndex.keySet()); final ExcerptTailer tailer = queue.createTailer(); final AtomicReference<String> capturedMessage = new AtomicReference<>(); for (int i = 0; i < 100; i++) { final long randomIndex = indices.get(random.nextInt(messageByIndex.keySet().size())); tailer.moveToIndex(randomIndex); tailer.readDocument(w -> capturedMessage.set((String) w.read("message").object())); assertEquals(messageByIndex.get(randomIndex), capturedMessage.get()); tailer.readDocument(w -> w.read("message").object()); } } }
dc.wire().writeEventName(() -> "header") .typePrefix(SingleChronicleQueueStore.class).marshallable( w -> w.write(() -> "wireType").object(WireType.BINARY));
@Test public void testCheckIndexWithWritingDocument() { doTestCheckIndex( (appender, n) -> { try (final DocumentContext dc = appender.writingDocument()) { dc.wire().writeEventName("").object("" + n); } }); }
@Test public void testDtoAbstractMarshallable() { File tmp = DirectoryUtils.tempDir("abstractBytesMarshalTest"); DtoAbstractMarshallable dto = new DtoAbstractMarshallable(); dto.age = 45; dto.name.append("rob"); try (ChronicleQueue q = ChronicleQueue.singleBuilder(tmp).build()) { try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("who").object(dto); } try (DocumentContext dc = q.createTailer().readingDocument()) { String yaml = dc.toString(); System.out.println(yaml); DtoAbstractMarshallable who = (DtoAbstractMarshallable) dc.wire().read("who").object(); System.out.println(who); Assert.assertTrue(yaml.contains(who.toString())); } } }
@Test public void testMapWrapper() { try (ChronicleQueue syncQ = builder(getTmpDir(), this.wireType) .build()) { File name2 = DirectoryUtils.tempDir(testName.getMethodName()); try (ChronicleQueue chronicle = builder(name2, this.wireType) .build()) { ExcerptAppender appender = chronicle.acquireAppender(); MapWrapper myMap = new MapWrapper(); myMap.map.put("hello", 1.2); appender.writeDocument(w -> w.write().object(myMap)); ExcerptTailer tailer = chronicle.createTailer(); try (DocumentContext documentContext = tailer.readingDocument()) { MapWrapper object = documentContext.wire().read().object(MapWrapper.class); Assert.assertEquals(1.2, object.map.get("hello"), 0.0); } } } }
try (DocumentContext dc = wire.writingDocument(true)) { dc.wire().writeEventName(() -> "header").typePrefix(SingleChronicleQueueStore.class).marshallable(w -> { w.write(() -> "wireType").object(WireType.BINARY); w.write(() -> "writePosition").int64forBinding(0); w.write(() -> "roll").typedMarshallable(new SCQRoll(RollCycles.TEST4_DAILY, 0, null, null));
@Test public void testDtoBytesMarshallable() { File tmp = DirectoryUtils.tempDir("abstractBytesMarshalTest"); DtoBytesMarshallable dto = new DtoBytesMarshallable(); dto.age = 45; dto.name.append("rob"); try (ChronicleQueue q = ChronicleQueue.singleBuilder(tmp).build()) { try (DocumentContext dc = q.acquireAppender().writingDocument()) { dc.wire().write("who").object(dto); } try (DocumentContext dc = q.createTailer().readingDocument()) { DtoBytesMarshallable who = (DtoBytesMarshallable) dc.wire().read("who").object(); Assert.assertEquals("!net.openhft.chronicle.queue.DtoBytesMarshallableTest$DtoBytesMarshallable {\n" + " name: rob,\n" + " age: 45\n" + "}\n", who.toString()); } } }
@NotNull ExcerptAppender appender = queue.acquireAppender(); appender.writeDocument(new Order("Symbol", Side.Buy, 1.2345, 1e6)); appender.writeDocument(w -> w.write("newOrder").object(new Order("Symbol2", Side.Sell, 2.999, 10e6))); String expectedEager = appender.padToCacheAlignMode() == MarshallableOut.Padding.WORD ? "--- !!meta-data #binary\n" +
@Override public void writeMarshallable(@NotNull WireOut wire) { wire.write(MapEventFields.assetName).text(assetName); wire.write(MapEventFields.key).object(key); wire.write(MapEventFields.oldValue).object(oldValue); wire.write(MapEventFields.value).object(value); wire.write(MapEventFields.isReplicationEvent).object(isReplicationEvent); wire.write(MapEventFields.hasValueChanged).object(hasValueChanged); } }
@Override public void writeMarshallable(@org.jetbrains.annotations.NotNull WireOut wireOut) { wireOut.write(() -> "type").text(type.toString()); wireOut.write(() -> "wrapped").object(wrapped); }
@Override public void writeMarshallable(@NotNull WireOut wireOut) { super.writeMarshallable(wireOut); wireOut.write(() -> "valueClass").typeLiteral(valueClass); wireOut.write(() -> "valueSizeMarshaller").object(valueSizeMarshaller); wireOut.write(() -> "valueReader").object(valueReader); wireOut.write(() -> "valueDataAccess").object(valueDataAccess); wireOut.write(() -> "constantlySizedEntry").bool(constantlySizedEntry); wireOut.write(() -> "alignment").int32(alignment); wireOut.write(() -> "worstAlignment").int32(worstAlignment); }
@Override public void publish(M event) { checkMessage(event); sendEventAsync(publish, valueOut -> valueOut.marshallable(m -> { m.write(Params.message).object(event); }), true); }
@Override public void writeMarshallable(@NotNull WireOut wire) { wire .write(MetaDataField.wireType).object(wireType) .write(MetaDataField.recovery).typedMarshallable(recovery); if (metadata != Metadata.NoMeta.INSTANCE) wire.write(MetaDataField.metadata).typedMarshallable(this.metadata); // align to a word whether needed or not as a micro-optimisation. wire.writeAlignTo(Integer.BYTES, 0); }
@Override public void onSubscribe(@NotNull final WireOut wireOut) { wireOut.writeEventName(registerSubscriber). typeLiteral(CLASS_ALIASES.nameFor(rc.elementType())); if (!filter.isEmpty()) wireOut.writeEventName(() -> "filter").object(filter); }