Expand description
Top-level facade for the Group Protocol Stack.
Most users should depend on this single crate; the layered architecture is an implementation detail that is exposed for users who only need a subset of the stack.
§Layers
┌────────────────────────────────────────────────────────┐
│ Layer 4 — orchestration │
│ gbp-node → gbp-stack → gbp-stack-ffi │
├────────────────────────────────────────────────────────┤
│ Layer 3 — security & transport │
│ gbp-mls · gbp-transport · gbp-sframe │
├────────────────────────────────────────────────────────┤
│ Layer 2 — sub-protocols on top of GBP │
│ gtp-protocol · gap-protocol · gsp-protocol │
├────────────────────────────────────────────────────────┤
│ Layer 1 — base protocol │
│ gbp-protocol (GbpFrame, ControlMessage, …) │
├────────────────────────────────────────────────────────┤
│ Layer 0 — vocabulary │
│ gbp-core (StreamType, Flags, FSM, codes) │
└────────────────────────────────────────────────────────┘Re-exports§
pub use gap;pub use gbp;pub use gbp_core as core;pub use gbp_mls as mls;pub use gbp_node as node;pub use gbp_transport as transport;pub use gsp;pub use gtp;pub use gbp_sframe;
Modules§
- codes
- All canonical error codes.
- timeouts
- Timeout defaults normative for interoperable deployments (gbp-state-machine §6).
Structs§
- Bounded
Seen - A set with a bounded capacity that evicts the oldest entry on overflow.
- Capabilities
Negotiator - Per-member set of advertised capability tokens.
- Control
Message - Control plane message that travels on Stream 0.
- Delivered
Payload - Information about a payload delivered by GBP to a sub-protocol.
- Error
Object - Wire-serialisable error object.
- GapClient
- Stateful GAP client.
- GapPayload
- Audio frame payload.
- GbpFlags
- Bit set on top of
u16. Hand-rolled to keepgbp-corefree of any dependency tree. - GbpFrame
- CBOR-encoded GBP frame.
- Group
Node - GBP-layer node.
- GspAccept
- Accepted signal: decoded fields plus the local state effects already applied by the client.
- GspClient
- Stateful GSP client.
- GspSignal
- GSP signal envelope.
argscarries opcode-specific CBOR bytes. - GtpClient
- Stateful GTP client.
- GtpMessage
- GTP message envelope. Eight CBOR keys.
- MlsContext
- MLS context for a single group member.
- Outbound
Frame - A wire-ready outbound frame: the recipient and its serialised CBOR bytes.
- SFrame
Decryptor - Multi-sender SFrame decryptor for one epoch.
- SFrame
Encryptor - Stateful per-sender SFrame encryptor.
- SFrame
Header - Decoded SFrame header fields.
- SFrame
Session - An SFrame session bound to one MLS epoch.
Enums§
- Cipher
Suite - SFrame ciphersuite selection.
- Control
Opcode - Control plane opcode. Width: u16.
- Error
Class - Coarse classification of an error. Single byte on the wire.
- Event
- Events surfaced by the GBP layer.
- GapAccept
- Outcome of accepting a GAP payload.
- GapError
- Errors returned by
GapClient. - GspError
- Errors returned by
GspClient. - GtpAccept
- Outcome of accepting a GTP payload.
- GtpError
- Errors returned by
GtpClient. - Node
Error - Errors raised by
GroupNode. - Node
State - Group node FSM.
- Payload
Codec - Codec used to encode the sub-protocol payload inside a
GbpFrame. - Processed
Kind - Categorises an MLS message processed via
MlsContext::process_message. - SFrame
Error - Errors that can occur in the SFrame layer.
- Signal
Type - Signal opcode. Allocation: 1xx — membership, 2xx — media permissions, 3xx — stream, 4xx — config.
- Stream
Label - Exporter label that binds the AEAD key to a stream class.
- Stream
Type - Stream class. Each
StreamTypeis a separate sub-protocol with its own delivery and reliability policy (see the GBP interop profile). - Transition
State - Epoch transition FSM.
- Wire
Error - Errors raised by the transport layer.
Constants§
- MAX_
FRAME - Maximum size of a single on-the-wire message (1 MiB).
Traits§
- Sealer
- Trait abstracting the AEAD seal / open operations.
Functions§
- label_
for - Maps a
StreamTypeto the correspondingStreamLabel. - read_
blob - Reads an opaque length-prefixed blob.
- read_
frame - Reads a
GbpFrameusinglength-prefix + CBORframing. - write_
blob - Writes an opaque length-prefixed blob (e.g. a serialised MLS Welcome or KeyPackage).
- write_
frame - Writes a
GbpFrameusingCBOR + length-prefixframing.