gbp_core/lib.rs
1//! Core type vocabulary for the Group Broadcast Protocol (GBP) stack.
2//!
3//! This crate has no external dependencies beyond `core`/`alloc` and is the
4//! shared foundation for every other crate in the stack:
5//!
6//! * [`StreamType`] — the four stream classes defined by GBP.
7//! * [`GbpFlags`] — frame delivery flag constants.
8//! * [`NodeState`], [`TransitionState`], [`SubprotocolState`] — finite state
9//! machines from the state-machine specification.
10//! * [`ControlOpcode`] — the control plane opcode registry.
11//! * [`SignalType`] — the GSP signal opcode registry.
12//! * [`ErrorClass`] and [`codes`] — the error registry.
13//! * Type aliases for [`GroupId`], [`MemberId`], [`Epoch`], [`TransitionId`],
14//! [`StreamId`] and [`SequenceNo`].
15//!
16//! These types intentionally carry no I/O, no serialization and no crypto so
17//! that the higher layers can depend on a stable, lightweight vocabulary.
18
19#![forbid(unsafe_code)]
20#![deny(missing_docs)]
21
22pub mod bounded;
23pub mod codec;
24pub mod conformance;
25pub mod control;
26pub mod errors;
27pub mod flags;
28pub mod ids;
29pub mod signal;
30pub mod state;
31pub mod stream;
32
33pub use bounded::BoundedSeen;
34pub use codec::PayloadCodec;
35pub use conformance::ConformanceClass;
36pub use control::ControlOpcode;
37pub use errors::{ErrorClass, codes};
38pub use flags::GbpFlags;
39pub use ids::{Epoch, GroupId, MemberId, SequenceNo, StreamId, TransitionId};
40pub use signal::SignalType;
41pub use state::{NodeState, SubprotocolState, TransitionState, timeouts};
42pub use stream::StreamType;