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.

pub fn payload(msg: TaggedMessage(payload)) -> payload

Extract the payload.

pub fn tag(msg: TaggedMessage(payload)) -> String

Get the tag.

pub fn version(msg: TaggedMessage(payload)) -> Int

Get the version.

Search Document