Package org.apache.cassandra.utils.vint
Class VIntCoding
- java.lang.Object
-
- org.apache.cassandra.utils.vint.VIntCoding
-
public class VIntCoding extends java.lang.ObjectBorrows idea from https://developers.google.com/protocol-buffers/docs/encoding#varints
-
-
Field Summary
Fields Modifier and Type Field Description protected static io.netty.util.concurrent.FastThreadLocal<byte[]>encodingBufferstatic intMAX_SIZE
-
Constructor Summary
Constructors Constructor Description VIntCoding()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static intcomputeUnsignedVIntSize(long value)Compute the number of bytes that would be needed to encode an unsigned varint.static intcomputeUnsignedVIntSize(java.nio.ByteBuffer input, int readerIndex)Computes size of an unsigned vint that starts at readerIndex of the provided ByteBuf.static intcomputeUnsignedVIntSize(java.nio.ByteBuffer input, int readerIndex, int readerLimit)static intcomputeVIntSize(long param)Compute the number of bytes that would be needed to encode a varint.static longdecodeZigZag64(long n)Decode a ZigZag-encoded 64-bit value.static intencodeExtraBytesToRead(int extraBytesToRead)static longencodeZigZag64(long n)Encode a ZigZag-encoded 64-bit value.static intfirstByteValueMask(int extraBytesToRead)static longgetUnsignedVInt(java.nio.ByteBuffer input, int readerIndex)Note this method is the same asreadUnsignedVInt(DataInput), except that we do *not* block if there are not enough bytes in the buffer to reconstruct the value.static longgetUnsignedVInt(java.nio.ByteBuffer input, int readerIndex, int readerLimit)static intnumberOfExtraBytesToRead(int firstByte)static longreadUnsignedVInt(java.io.DataInput input)static longreadVInt(java.io.DataInput input)static voidskipUnsignedVInt(DataInputPlus input)static voidwriteUnsignedVInt(long value, java.nio.ByteBuffer output)static voidwriteUnsignedVInt(long value, DataOutputPlus output)static voidwriteVInt(long value, java.nio.ByteBuffer output)static voidwriteVInt(long value, DataOutputPlus output)
-
-
-
Field Detail
-
encodingBuffer
protected static final io.netty.util.concurrent.FastThreadLocal<byte[]> encodingBuffer
-
MAX_SIZE
public static final int MAX_SIZE
- See Also:
- Constant Field Values
-
-
Method Detail
-
readUnsignedVInt
public static long readUnsignedVInt(java.io.DataInput input) throws java.io.IOException- Throws:
java.io.IOException
-
skipUnsignedVInt
public static void skipUnsignedVInt(DataInputPlus input) throws java.io.IOException
- Throws:
java.io.IOException
-
getUnsignedVInt
public static long getUnsignedVInt(java.nio.ByteBuffer input, int readerIndex)Note this method is the same asreadUnsignedVInt(DataInput), except that we do *not* block if there are not enough bytes in the buffer to reconstruct the value. WARNING: this method is only safe for vints we know to be representable by a positive long value.- Returns:
- -1 if there are not enough bytes in the input to read the value; else, the vint unsigned value.
-
getUnsignedVInt
public static long getUnsignedVInt(java.nio.ByteBuffer input, int readerIndex, int readerLimit)
-
computeUnsignedVIntSize
public static int computeUnsignedVIntSize(java.nio.ByteBuffer input, int readerIndex)Computes size of an unsigned vint that starts at readerIndex of the provided ByteBuf.- Returns:
- -1 if there are not enough bytes in the input to calculate the size; else, the vint unsigned value size in bytes.
-
computeUnsignedVIntSize
public static int computeUnsignedVIntSize(java.nio.ByteBuffer input, int readerIndex, int readerLimit)
-
readVInt
public static long readVInt(java.io.DataInput input) throws java.io.IOException- Throws:
java.io.IOException
-
firstByteValueMask
public static int firstByteValueMask(int extraBytesToRead)
-
encodeExtraBytesToRead
public static int encodeExtraBytesToRead(int extraBytesToRead)
-
numberOfExtraBytesToRead
public static int numberOfExtraBytesToRead(int firstByte)
-
writeUnsignedVInt
@Inline public static void writeUnsignedVInt(long value, DataOutputPlus output) throws java.io.IOException- Throws:
java.io.IOException
-
writeUnsignedVInt
@Inline public static void writeUnsignedVInt(long value, java.nio.ByteBuffer output)
-
writeVInt
@Inline public static void writeVInt(long value, DataOutputPlus output) throws java.io.IOException- Throws:
java.io.IOException
-
writeVInt
@Inline public static void writeVInt(long value, java.nio.ByteBuffer output) throws java.io.IOException- Throws:
java.io.IOException
-
decodeZigZag64
public static long decodeZigZag64(long n)
Decode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers into values that can be efficiently encoded with varint. (Otherwise, negative values must be sign-extended to 64 bits to be varint encoded, thus always taking 10 bytes on the wire.)- Parameters:
n- An unsigned 64-bit integer, stored in a signed int because Java has no explicit unsigned support.- Returns:
- A signed 64-bit integer.
-
encodeZigZag64
public static long encodeZigZag64(long n)
Encode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers into values that can be efficiently encoded with varint. (Otherwise, negative values must be sign-extended to 64 bits to be varint encoded, thus always taking 10 bytes on the wire.)- Parameters:
n- A signed 64-bit integer.- Returns:
- An unsigned 64-bit integer, stored in a signed int because Java has no explicit unsigned support.
-
computeVIntSize
public static int computeVIntSize(long param)
Compute the number of bytes that would be needed to encode a varint.
-
computeUnsignedVIntSize
public static int computeUnsignedVIntSize(long value)
Compute the number of bytes that would be needed to encode an unsigned varint.
-
-