X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fio%2FChunkedByteArray.java;fp=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fpersisted%2FChunkedByteArray.java;h=87f8a18aeaa85215055f88bd904948c1f6a89853;hp=73a7df95421b7f4454f16636c57a6fe3f328e23e;hb=88d921169a0ccd41339e5409bbe8e7db18597609;hpb=255e74efd633f2fbca7ce4f1372004d93cc81a10 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ChunkedByteArray.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/io/ChunkedByteArray.java similarity index 74% rename from opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ChunkedByteArray.java rename to opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/io/ChunkedByteArray.java index 73a7df9542..87f8a18aea 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/ChunkedByteArray.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/io/ChunkedByteArray.java @@ -5,22 +5,27 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.cluster.datastore.persisted; +package org.opendaylight.controller.cluster.io; import static java.util.Objects.requireNonNull; +import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; import com.google.common.collect.ImmutableList; +import com.google.common.io.ByteSink; import java.io.DataOutput; import java.io.IOException; +import java.io.InputStream; import java.io.ObjectInput; import java.util.ArrayList; import java.util.List; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yangtools.concepts.Immutable; +@Beta @NonNullByDefault -final class ChunkedByteArray implements Immutable { +public final class ChunkedByteArray implements Immutable { private final ImmutableList chunks; private final int size; @@ -29,7 +34,7 @@ final class ChunkedByteArray implements Immutable { this.chunks = requireNonNull(chunks); } - static ChunkedByteArray readFrom(final ObjectInput in, final int size, final int chunkSize) + public static ChunkedByteArray readFrom(final ObjectInput in, final int size, final int chunkSize) throws IOException { final List chunks = new ArrayList<>(requiredChunks(size, chunkSize)); int remaining = size; @@ -43,25 +48,32 @@ final class ChunkedByteArray implements Immutable { return new ChunkedByteArray(size, ImmutableList.copyOf(chunks)); } - int size() { + public int size() { return size; } - ChunkedInputStream openStream() { + public InputStream openStream() { return new ChunkedInputStream(size, chunks.iterator()); } - void copyTo(final DataOutput output) throws IOException { + public void copyTo(final DataOutput output) throws IOException { for (byte[] chunk : chunks) { output.write(chunk, 0, chunk.length); } } + public void copyTo(final ByteSink output) throws IOException { + for (byte[] chunk : chunks) { + output.write(chunk); + } + } + @Override public String toString() { return MoreObjects.toStringHelper(this).add("size", size).add("chunkCount", chunks.size()).toString(); } + @VisibleForTesting ImmutableList getChunks() { return chunks; }