module
Movie::Remote::FrameCodec
Overview
FrameCodec handles length-prefixed framing for wire protocol messages. Frame format: [4-byte length (big-endian)] [JSON payload]
Defined in:
movie/remote/frame_codec.crmovie/remote/reusable_json_pull_parser.cr
Constant Summary
-
FRAME_PREFIX_SIZE =
sizeof(UInt32) -
INITIAL_BUFFER_CAPACITY =
1024 -
MAX_FRAME_SIZE =
(16 * 1024) * 1024 -
Maximum frame size (16 MB)
-
MAX_RETAINED_BUFFER_CAPACITY =
1024 * 1024
Class Method Summary
-
.decode(io : IO) : WireEnvelope | Nil
Decodes a WireEnvelope from the IO.
-
.decode_from_bytes(bytes : Bytes) : WireEnvelope | Nil
Decodes an envelope from bytes (useful for testing).
-
.encode(envelope : WireEnvelope, io : IO) : Nil
Encodes a WireEnvelope to the IO with length-prefixed framing.
-
.encode_to_bytes(envelope : WireEnvelope) : Bytes
Encodes an envelope to bytes (useful for testing).
Class Method Detail
def self.decode(io : IO) : WireEnvelope | Nil
#
Decodes a WireEnvelope from the IO. Returns nil on EOF or if the connection is closed. Raises on malformed frames.
def self.decode_from_bytes(bytes : Bytes) : WireEnvelope | Nil
#
Decodes an envelope from bytes (useful for testing).
def self.encode(envelope : WireEnvelope, io : IO) : Nil
#
Encodes a WireEnvelope to the IO with length-prefixed framing.
def self.encode_to_bytes(envelope : WireEnvelope) : Bytes
#
Encodes an envelope to bytes (useful for testing).