distribute/codec/tagged
Types
A message annotated with a protocol tag and version.
pub opaque type TaggedMessage(payload)
Values
pub fn decode_tagged(
expected_tag: String,
expected_version: Int,
payload_decoder: fn(BitArray) -> Result(
payload,
codec.DecodeError,
),
data: BitArray,
) -> Result(payload, codec.DecodeError)
Convenience: decode binary as a tagged message and extract the payload.
pub fn decoder(
expected_tag: String,
expected_version: Int,
payload_decoder: fn(BitArray) -> Result(
payload,
codec.DecodeError,
),
) -> fn(BitArray) -> Result(
TaggedMessage(payload),
codec.DecodeError,
)
Decoder for tagged messages with tag and version validation.
pub fn encode_tagged(
tag: String,
version: Int,
payload_encoder: fn(payload) -> Result(
BitArray,
codec.EncodeError,
),
value: payload,
) -> Result(BitArray, codec.EncodeError)
Convenience: encode a value as a tagged message in one step.
pub fn encoder(
payload_encoder: fn(payload) -> Result(
BitArray,
codec.EncodeError,
),
) -> fn(TaggedMessage(payload)) -> Result(
BitArray,
codec.EncodeError,
)
Encoder for tagged messages. Format: [tag_len:32][tag:utf8][version:32][payload]
pub fn new(
tag: String,
version: Int,
payload: payload,
) -> TaggedMessage(payload)
Create a tagged message.