Source code for runtimepy.primitives.serializable.fixed

"""
A module implementing a fixed-size bytes serializable.
"""

# built-in
from copy import copy as _copy

# third-party
from vcorelib.io import BinaryMessage

# internal
from runtimepy.primitives.serializable.base import Serializable


[docs] class FixedChunk(Serializable): """A simple fixed-size serializable chunk.""" def __init__(self, data: bytes, chain: Serializable = None) -> None: """Initialize this instance.""" super().__init__(chain=chain) self.data = data self.size = len(self.data) def __str__(self) -> str: """Get this chunk as a string.""" return self.data.decode() def _copy_impl(self) -> "FixedChunk": """Make a copy of this instance.""" return FixedChunk(_copy(self.data)) def __bytes__(self) -> bytes: """Get this serializable as a bytes instance.""" return self.data
[docs] def update(self, data: BinaryMessage, timestamp_ns: int = None) -> int: """Update this serializable from a bytes instance.""" del timestamp_ns self.data = bytes(data) self.size = len(self.data) return self.size