public static Chain getChain(boolean isSequenced, ByteBuffer... buffers) { List<Element> elements = new ArrayList<>(); long counter = 0; for (final ByteBuffer buffer : buffers) { if (isSequenced) { elements.add(getElement(counter++, buffer)); } else { elements.add(getElement(buffer)); } } return getChain(elements); }
public static Chain decode(StructDecoder<?> decoder) { StructArrayDecoder<? extends StructDecoder<?>> elementsDecoder = decoder.structs("elements"); final List<Element> elements = new ArrayList<>(); for (int i = 0; i < elementsDecoder.length(); i++) { StructDecoder<?> elementDecoder = elementsDecoder.next(); Long sequence = elementDecoder.int64("sequence"); ByteBuffer byteBuffer = elementDecoder.byteBuffer("payload"); elementDecoder.end(); if (sequence == null) { elements.add(Util.getElement(byteBuffer)); } else { elements.add(Util.getElement(sequence, byteBuffer)); } } elementsDecoder.end(); return Util.getChain(elements); } }
@Test public void untrackedMessageAreNotStored() throws Exception { // Nothing tracked assertThat(activeMessageHandler.getTrackedClients().count()).isZero(); List<Element> elements = new ArrayList<>(1); elements.add(getElement(createPayload(44L))); // Send a replace message, those are not tracked storeProxy.replaceAtHead(44L, getChain(elements), getChain(new ArrayList<>(0))); // Not tracked as well storeProxy.get(42L); assertThat(activeMessageHandler.getTrackedClients().count()).isZero(); }
public static Chain getChain(boolean isSequenced, ByteBuffer... buffers) { List<Element> elements = new ArrayList<>(); long counter = 0; for (final ByteBuffer buffer : buffers) { if (isSequenced) { elements.add(getElement(counter++, buffer)); } else { elements.add(getElement(buffer)); } } return getChain(elements); }
public static Chain decode(StructDecoder<?> decoder) { StructArrayDecoder<? extends StructDecoder<?>> elementsDecoder = decoder.structs("elements"); final List<Element> elements = new ArrayList<>(); for (int i = 0; i < elementsDecoder.length(); i++) { StructDecoder<?> elementDecoder = elementsDecoder.next(); Long sequence = elementDecoder.int64("sequence"); ByteBuffer byteBuffer = elementDecoder.byteBuffer("payload"); elementDecoder.end(); if (sequence == null) { elements.add(Util.getElement(byteBuffer)); } else { elements.add(Util.getElement(sequence, byteBuffer)); } } elementsDecoder.end(); return Util.getChain(elements); } }