tdlib-session-container/src/main/java/it/tdlight/utils/VertxBufferOutputStream.java

60 lines
1.5 KiB
Java

package it.tdlight.utils;
import io.vertx.core.buffer.Buffer;
import it.unimi.dsi.fastutil.bytes.ByteArrays;
import org.warp.commonutils.stream.SafeMeasurableOutputStream;
import org.warp.commonutils.stream.SafeRepositionableStream;
public class VertxBufferOutputStream extends SafeMeasurableOutputStream implements SafeRepositionableStream {
/** The buffer backing the output stream. */
public Buffer buffer;
/** Creates a new buffer output stream with an initial capacity of 0 bytes. */
public VertxBufferOutputStream() {
this(0);
}
/** Creates a new buffer output stream with a given initial capacity.
*
* @param initialCapacity the initial length of the backing buffer.
*/
public VertxBufferOutputStream(final int initialCapacity) {
buffer = Buffer.buffer(initialCapacity);
}
/** Creates a new buffer output stream wrapping a given byte buffer.
*
* @param a the byte buffer to wrap.
*/
public VertxBufferOutputStream(final Buffer a) {
buffer = a;
}
@Override
public void write(final int b) {
buffer.appendByte((byte) b);
}
@Override
public void write(final byte[] b, final int off, final int len) {
ByteArrays.ensureOffsetLength(b, off, len);
buffer.appendBytes(b, off, len);
}
@Override
public void position(long newPosition) {
throw new UnsupportedOperationException("Can't change position of a vertx buffer output stream");
}
@Override
public long position() {
return this.length();
}
@Override
public long length() {
return buffer.length();
}
}