Light Dark

Functions

get-header

fn (message: Message, name: Str): Any

Get a header value from a message by name.

Returns the header value or null if not found.

Example

message-type get-header(msg, ":message-type")
event-type get-header(msg, ":event-type")
content-type get-header(msg, ":content-type")

is-error

fn (message: Message): Bool

Check if a message is an error (:message-type is "error").

is-event

fn (message: Message): Bool

Check if a message is an event (:message-type is "event").

is-exception

fn (message: Message): Bool

Check if a message is an exception (:message-type is "exception").

parse-header-value

fn (data: Bytes, offset: Int, header-type: Int): HeaderValueResult

Internal: Parse a header value based on its type.

parse-headers

fn (data: Bytes): Map

Internal: Parse headers from header bytes.

parse-headers-recursive

fn (data: Bytes, offset: Int, headers: Map): Map

Internal: Recursively parse headers.

parse-message

fn (data: Bytes): ParseResult

Parse a single event stream message from bytes.

Returns a ParseResult with the parsed message or an error.

Example

result parse-message(message-bytes)
cond {
    result.ok => {
        log(result.message.headers)
        log(Str(result.message.payload))
    }
    => { log("Error:", result.error) }
}

parse-message-internal

fn (data: Bytes): ParseResult

Internal: Parse a message assuming we have at least 16 bytes.

parse-stream

fn (data: Bytes): Vec

Parse all event stream messages from a byte stream.

Returns a vector of parsed Messages. Stops parsing on first error.

Example

messages parse-stream(stream-bytes)
each(messages, (msg) {
    event-type get-header(msg, ":event-type")
    log(event-type)
})

parse-stream-recursive

fn (data: Bytes, offset: Int, messages: Vec): Vec

Internal: Recursively parse messages from a stream.

Types

HeaderValueResult

HeaderValueResult type {
    value: Any,
    next_offset: Int
}

Internal type for header value parsing result.

Message

Message type {
    headers: Map,
    payload: Bytes
}

A parsed event stream message.

ParseResult

ParseResult type {
    ok: Bool,
    message: Message?,
    error: Str?,
    bytes_consumed: Int
}

Result of parsing an event stream message.