com.rt.storage.api.client.util.ByteArrayStreamingContent Maven / Gradle / Ivy
package com.rt.storage.api.client.util;
import java.io.IOException;
import java.io.OutputStream;
/**
* Streaming content whose source is a byte array.
*
* Implementation is not thread-safe.
*
* @since 1.14
* @author Yaniv Inbar
*/
public class ByteArrayStreamingContent implements StreamingContent {
/** Byte array content. */
private final byte[] byteArray;
/** Starting offset into the byte array. */
private final int offset;
/** Length of bytes to read from byte array. */
private final int length;
/** @param byteArray byte array content */
public ByteArrayStreamingContent(byte[] byteArray) {
this(byteArray, 0, byteArray.length);
}
/**
* @param byteArray byte array content
* @param offset starting offset into the byte array
* @param length of bytes to read from byte array
*/
public ByteArrayStreamingContent(byte[] byteArray, int offset, int length) {
this.byteArray = Preconditions.checkNotNull(byteArray);
Preconditions.checkArgument(offset >= 0 && length >= 0 && offset + length <= byteArray.length);
this.offset = offset;
this.length = length;
}
public void writeTo(OutputStream out) throws IOException {
out.write(byteArray, offset, length);
out.flush();
}
}