Skip to main content

gsp/
lib.rs

1//! **Group Signaling Protocol** — signalling sub-protocol of the
2//! Group Protocol Stack.
3//!
4//! Receive-side pipeline (GSP §7): decrypt (handled by GBP) → check sender
5//! authorisation → validate `args` schema → apply atomically → ACK / NACK.
6//!
7//! This crate provides:
8//!
9//! * [`GspSignal`] — the CBOR-encoded signal envelope.
10//! * [`GspClient`] — stateful client that maintains:
11//!   * `request_id` deduplication;
12//!   * a mute-list;
13//!   * the current membership set (driven by `JOIN` / `LEAVE`);
14//!   * `signal_type` → [`gbp_core::SignalType`] decoding.
15//!
16//! See [`gbp-protocol`] for the underlying frame format.
17//!
18//! [`gbp-protocol`]: https://crates.io/crates/gbp-protocol
19
20#![deny(missing_docs)]
21
22pub mod args;
23pub mod capabilities;
24pub mod client;
25pub mod roles;
26pub mod signal;
27
28pub use capabilities::CapabilitiesNegotiator;
29pub use client::{GspAccept, GspClient, GspError};
30pub use roles::{Permissions, RoleError, RoleRegistry, RoleSpec};
31pub use signal::GspSignal;