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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classVIntCoding.VIntOutOfRangeExceptionThrow when attempting to decode a vint and the output type doesn't have enough space to fit the value that was decoded
-
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 Deprecated Methods Modifier and Type Method Description static intcheckedCast(long value)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)static longgetUnsignedVInt(java.nio.ByteBuffer input, int readerIndex, int readerLimit)static <V> longgetUnsignedVInt(V input, ValueAccessor<V> accessor, int readerIndex)static <V> longgetUnsignedVInt(V input, ValueAccessor<V> accessor, int readerIndex, int readerLimit)static intgetUnsignedVInt32(java.nio.ByteBuffer input, int readerIndex)Read up to a 32-bit integer back, using the unsigned (no zigzag) encoding.static <V> intgetUnsignedVInt32(V input, ValueAccessor<V> accessor, int readerIndex)static longgetVInt(java.nio.ByteBuffer input, int readerIndex)static <V> longgetVInt(V input, ValueAccessor<V> accessor, int readerIndex)static intgetVInt32(java.nio.ByteBuffer input, int readerIndex)static <V> intgetVInt32(V input, ValueAccessor<V> accessor, int readerIndex)static intnumberOfExtraBytesToRead(int firstByte)static longreadUnsignedVInt(java.io.DataInput input)static intreadUnsignedVInt32(java.io.DataInput input)Read up to a 32-bit integer.static longreadVInt(java.io.DataInput input)static intreadVInt32(java.io.DataInput input)Read up to a signed 32-bit integer back.static voidskipUnsignedVInt(DataInputPlus input)static voidwriteUnsignedVInt(int value, java.nio.ByteBuffer output)Deprecated.See CASSANDRA-18099static voidwriteUnsignedVInt(int value, DataOutputPlus output)Deprecated.See CASSANDRA-18099static voidwriteUnsignedVInt(long value, java.nio.ByteBuffer output)static voidwriteUnsignedVInt(long value, DataOutputPlus output)static <V> intwriteUnsignedVInt(long value, V output, int offset, ValueAccessor<V> accessor)static voidwriteUnsignedVInt32(int value, java.nio.ByteBuffer output)static voidwriteUnsignedVInt32(int value, DataOutputPlus output)static <V> intwriteUnsignedVInt32(int value, V output, int offset, ValueAccessor<V> accessor)static voidwriteVInt(int value, java.nio.ByteBuffer output)Deprecated.See CASSANDRA-18099static voidwriteVInt(int value, DataOutputPlus output)Deprecated.See CASSANDRA-18099static voidwriteVInt(long value, java.nio.ByteBuffer output)static voidwriteVInt(long value, DataOutputPlus output)static <V> intwriteVInt(long value, V output, int offset, ValueAccessor<V> accessor)static voidwriteVInt32(int value, java.nio.ByteBuffer output)static voidwriteVInt32(int value, DataOutputPlus output)static <V> intwriteVInt32(int value, V output, int offset, ValueAccessor<V> accessor)
-
-
-
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
-
getUnsignedVInt32
public static int getUnsignedVInt32(java.nio.ByteBuffer input, int readerIndex)Read up to a 32-bit integer back, using the unsigned (no zigzag) encoding. 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.- Throws:
VIntCoding.VIntOutOfRangeException- If the vint doesn't fit into a 32-bit integer
-
getVInt32
public static int getVInt32(java.nio.ByteBuffer input, int readerIndex)
-
getVInt
public static long getVInt(java.nio.ByteBuffer input, int readerIndex)
-
getUnsignedVInt
public static long getUnsignedVInt(java.nio.ByteBuffer input, int readerIndex)
-
getUnsignedVInt
public static long getUnsignedVInt(java.nio.ByteBuffer input, int readerIndex, int readerLimit)
-
getUnsignedVInt32
public static <V> int getUnsignedVInt32(V input, ValueAccessor<V> accessor, int readerIndex)
-
getVInt32
public static <V> int getVInt32(V input, ValueAccessor<V> accessor, int readerIndex)
-
getVInt
public static <V> long getVInt(V input, ValueAccessor<V> accessor, int readerIndex)
-
getUnsignedVInt
public static <V> long getUnsignedVInt(V input, ValueAccessor<V> accessor, int readerIndex)
-
getUnsignedVInt
public static <V> long getUnsignedVInt(V input, ValueAccessor<V> accessor, 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
-
readVInt32
public static int readVInt32(java.io.DataInput input) throws java.io.IOExceptionRead up to a signed 32-bit integer back. Assumes the vint was written usingwriteVInt32(int, DataOutputPlus)or similar that zigzag encodes the integer.- Throws:
VIntCoding.VIntOutOfRangeException- If the vint doesn't fit into a 32-bit integerjava.io.IOException
-
readUnsignedVInt32
public static int readUnsignedVInt32(java.io.DataInput input) throws java.io.IOExceptionRead up to a 32-bit integer. This method assumes the original integer was written usingwriteUnsignedVInt32(int, DataOutputPlus)or similar that doesn't zigzag encodes the vint.- Throws:
VIntCoding.VIntOutOfRangeException- If the vint doesn't fit into a 32-bit integerjava.io.IOException
-
firstByteValueMask
public static int firstByteValueMask(int extraBytesToRead)
-
encodeExtraBytesToRead
public static int encodeExtraBytesToRead(int extraBytesToRead)
-
numberOfExtraBytesToRead
public static int numberOfExtraBytesToRead(int firstByte)
-
writeUnsignedVInt
@Deprecated(since="5.0") public static void writeUnsignedVInt(int value, DataOutputPlus output) throws java.io.IOExceptionDeprecated.See CASSANDRA-18099- Throws:
java.io.IOException
-
writeUnsignedVInt
@Inline public static void writeUnsignedVInt(long value, DataOutputPlus output) throws java.io.IOException- Throws:
java.io.IOException
-
writeUnsignedVInt32
public static void writeUnsignedVInt32(int value, DataOutputPlus output) throws java.io.IOException- Throws:
java.io.IOException
-
writeUnsignedVInt
@Deprecated(since="5.0") public static void writeUnsignedVInt(int value, java.nio.ByteBuffer output) throws java.io.IOExceptionDeprecated.See CASSANDRA-18099- Throws:
java.io.IOException
-
writeUnsignedVInt
@Inline public static void writeUnsignedVInt(long value, java.nio.ByteBuffer output)
-
writeVInt
@Inline public static <V> int writeVInt(long value, V output, int offset, ValueAccessor<V> accessor)
-
writeVInt32
@Inline public static <V> int writeVInt32(int value, V output, int offset, ValueAccessor<V> accessor)
-
writeUnsignedVInt32
@Inline public static <V> int writeUnsignedVInt32(int value, V output, int offset, ValueAccessor<V> accessor)
-
writeUnsignedVInt
@Inline public static <V> int writeUnsignedVInt(long value, V output, int offset, ValueAccessor<V> accessor)
-
writeUnsignedVInt32
@Inline public static void writeUnsignedVInt32(int value, java.nio.ByteBuffer output)
-
writeVInt
@Deprecated(since="5.0") public static void writeVInt(int value, DataOutputPlus output) throws java.io.IOExceptionDeprecated.See CASSANDRA-18099- Throws:
java.io.IOException
-
writeVInt
@Inline public static void writeVInt(long value, DataOutputPlus output) throws java.io.IOException- Throws:
java.io.IOException
-
writeVInt32
@Inline public static void writeVInt32(int value, DataOutputPlus output) throws java.io.IOException- Throws:
java.io.IOException
-
writeVInt
@Deprecated(since="5.0") public static void writeVInt(int value, java.nio.ByteBuffer output)Deprecated.See CASSANDRA-18099
-
writeVInt
@Inline public static void writeVInt(long value, java.nio.ByteBuffer output)
-
writeVInt32
@Inline public static void writeVInt32(int value, java.nio.ByteBuffer output)
-
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.
-
checkedCast
public static int checkedCast(long value)
-
-