blob: 17a4298f954c22e5389a129a1ee675e8efed87ec [file] [log] [blame]
from ._buffer import Buffer, BufferReadError, BufferWriteError # noqa
UINT_VAR_MAX = 0x3FFFFFFFFFFFFFFF
def encode_uint_var(value: int) -> bytes:
"""
Encode a variable-length unsigned integer.
"""
buf = Buffer(capacity=8)
buf.push_uint_var(value)
return buf.data
def size_uint_var(value: int) -> int:
"""
Return the number of bytes required to encode the given value
as a QUIC variable-length unsigned integer.
"""
if value <= 0x3F:
return 1
elif value <= 0x3FFF:
return 2
elif value <= 0x3FFFFFFF:
return 4
elif value <= 0x3FFFFFFFFFFFFFFF:
return 8
else:
raise ValueError("Integer is too big for a variable-length integer")