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.