@Override public Data<BytesRef> getData(@NotNull BytesRef instance) { if (instance.bytes.length == instance.length) { array = instance.bytes; } else { array = new byte[instance.length]; System.arraycopy(instance.bytes, instance.offset, array, 0, instance.length); } bs.init(array); return this; }
@Override public long offset() { return bs.start(); }
private void initTransients() { bs = HeapBytesStore.uninitialized(); }
@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())); } } }
@Override public void uninit() { array = null; bs.uninit(); }
@Override public long size() { return bs.capacity(); }
@NotNull HeapBytesStore<byte[]> bs = BytesStore.wrap(byteArray); try { return bs.bytesForRead(); } finally { bs.release();
@NotNull public static <T> HeapBytesStore<T> uninitialized() { return new HeapBytesStore<>(); }
@Override public void uninit() { array = null; bs.uninit(); }
@Override public long size() { return bs.capacity(); }
@NotNull static HeapBytesStore<byte[]> wrap(@NotNull byte[] byteArray) { return new HeapBytesStore<>(byteArray); }
@Override public Data<byte[]> getData(@NotNull byte[] instance) { array = instance; bs.init(instance); return this; }
@Override public long offset() { return bs.start(); }
private void initTransients() { bs = HeapBytesStore.uninitialized(); }
@Override public void uninit() { bb = null; if (bytesStore == nativeBytesStore) { nativeBytesStore.uninit(); } else { heapBytesStore.uninit(); } }
@NotNull static HeapBytesStore<ByteBuffer> wrap(@NotNull ByteBuffer bb) { return new HeapBytesStore<>(bb); }
private HeapBytesStore(@NotNull ByteBuffer byteBuffer) { init(byteBuffer); }
private void checkBounds(final long offset, final int size, final Function<String, RuntimeException> exceptionFunction) { if (offset < start() || offset + size > capacity) { throw exceptionFunction.apply( String.format("Offset: %d, start: %d, size: %d, capacity: %d", offset, start(), size, capacity)); } } }
private void initTransients() { heapBytesStore = HeapBytesStore.uninitialized(); nativeBytesStore = NativeBytesStore.uninitialized(); bytes = VanillaBytes.vanillaBytes(); }
private HeapBytesStore(@NotNull byte[] byteArray) { init(byteArray); }