distribute/codec/tagged

Types

A message with tag and version information for protocol safety.

pub opaque type TaggedMessage(payload)

Values

pub fn decoder(
  expected_tag: String,
  expected_version: Int,
  payload_decoder: fn(BitArray) -> Result(
    payload,
    codec.DecodeError,
  ),
) -> fn(BitArray) -> Result(
  TaggedMessage(payload),
  codec.DecodeError,
)

Create a decoder for tagged messages with validation. This ensures received messages match the expected tag and version.

pub fn encoder(
  payload_encoder: fn(payload) -> Result(
    BitArray,
    codec.EncodeError,
  ),
) -> fn(TaggedMessage(payload)) -> Result(
  BitArray,
  codec.EncodeError,
)

Create an encoder for tagged messages. This embeds the tag and version in the binary format.

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 from a tagged message.

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

Get the tag from a tagged message.

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

Get the version from a tagged message.

Search Document