package net.tomp2p.synchronization;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
public class RArray {
private final byte[] array;
private final int offset;
private final int length;
private final ByteBuf dataBuffer;
public RArray(byte[] array, int offset, int length) {
this.array = array;
this.offset = offset;
this.length = length;
this.dataBuffer = null;
}
public RArray(ByteBuf dataBuffer) {
this.array = null;
this.offset = -1;
this.length = -1;
this.dataBuffer = dataBuffer;
}
public byte[] array() {
return array;
}
public int offset() {
return offset;
}
public int length() {
return length;
}
public ByteBuf dataBuffer() {
return dataBuffer;
}
public boolean hasDataBuffer() {
return dataBuffer != null;
}
public void transferTo(ByteBuf buf) {
if(hasDataBuffer()) {
buf.writeBytes(dataBuffer.duplicate());
} else {
buf.writeBytes(Unpooled.wrappedBuffer(array, offset, length));
}
}
}