jam.utils.codec.primitives.integers module
Integer codec implementations for JAM protocol encoding specification.
Implements both fixed-width integers and the general variable-length integer encoding scheme specified in JAM graypaper Appendix C.
Fixed width integers are encoded in little-endian format. Variable length integers use the following scheme: - 0x00-0xFC: Direct value (1 byte) - 0xFD: u16 value (3 bytes) - 0xFE: u24 value (4 bytes) - 0xFF: u32 value (5 bytes)
- class jam.utils.codec.primitives.integers.IntegerCodec(byte_size: int)[source]
Bases:
CodecBase codec for fixed-width integers.
Encodes integers in little-endian format with fixed width. Supports both signed and unsigned values.
- __init__(byte_size: int)[source]
Initialize codec for specific integer type.
- Parameters:
byte_size – Number of bytes for encoded value
python_type – Python type for values
- encode_into(value: int, buffer: bytes | bytearray | memoryview, offset: int = 0) int[source]
Encode integer into buffer.
- Parameters:
value – Integer to encode
buffer – Target buffer
offset – Starting offset
- Returns:
Number of bytes written
- Raises:
EncodeError – If value out of bounds or buffer too small
- static decode_from(_byte_size: int, buffer: bytes | bytearray | memoryview, offset: int = 0) Tuple[int, int][source]
Decode integer from buffer.
- Parameters:
buffer – Source buffer
offset – Starting offset
context – Optional decoding context
- Returns:
Tuple of (decoded value, bytes read)
- Raises:
DecodeError – If buffer too small
- class jam.utils.codec.primitives.integers.GeneralCodec[source]
-
Codec for variable-length integer encoding.
Implements variable length int encoding scheme
- encode_into(value: int, buffer: bytearray, offset: int = 0) int[source]
Encode integer using variable-length scheme.
- Parameters:
value – Integer to encode
buffer – Target buffer
offset – Starting offset
- Returns:
Number of bytes written
- Raises:
EncodeError – If value invalid or buffer too small
- static decode_from(buffer: bytes | bytearray | memoryview, offset: int = 0) Tuple[int, int][source]
Decode integer using variable-length scheme.
- Parameters:
buffer – Source buffer
offset – Starting offset
- Returns:
Tuple of (decoded value, bytes read)
- Raises:
DecodeError – If buffer too small or invalid encoding