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.cr
movie/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

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.


[View source]
def self.decode_from_bytes(bytes : Bytes) : WireEnvelope | Nil #

Decodes an envelope from bytes (useful for testing).


[View source]
def self.encode(envelope : WireEnvelope, io : IO) : Nil #

Encodes a WireEnvelope to the IO with length-prefixed framing.


[View source]
def self.encode_to_bytes(envelope : WireEnvelope) : Bytes #

Encodes an envelope to bytes (useful for testing).


[View source]