//! Channels protocol: N logical channels over one transport stream //! (ADR-034, amended by ADR-035 — no `stream_type` concept). //! //! Channel 0 is pre-negotiated as `alk/call` (ADR-036); channels //! 1..N are opened dynamically via per-ALPN open ops on channel 0 //! (ADR-047). The channels layer is a re-framing proxy: it converts //! between "one transport stream carrying N channels" (the wire) and //! "N independent `BiStream` handles" (what handlers see). //! //! ## Module layout //! //! - [`wire`]: the 8-byte chunk header (sync core, WASM-clean). //! - [`reassembly`]: per-channel `MpscSendStream` / `MpscRecvStream` — //! the reassembled `AsyncRead + AsyncWrite` pair the handler sees. //! - [`mux`]: the mux (`MuxHandle` / `MuxRunner`) — frames per-channel //! bytes back onto the transport. //! - [`manager`]: `ChannelManager` + `ChannelState` + the channel map. //! - [`source`]: `ChannelBidiStreamSource` — implements //! `BidiStreamSource` for a single channel (yield-once `accept_bi`). //! - [`adapter`]: `ChannelsAdapter` — `ProtocolHandler` for //! `alk/channels` (the demux loop). //! - [`operations`]: `ChannelOperations` — registers `channel/close`, //! `channel/control`, `channel/resources/subscribe` on the call //! `OperationRegistry`; the per-ALPN open ops are registered by the //! ALPN crates via `ChannelCore` (ADR-047 §3). //! - [`policy`]: `ChannelLifecyclePolicy` + `PerIdentityChannelPolicy` //! (ADR-041, amended by ADR-047 §7 — opener ledger). //! - [`pump`]: `pump_bidi` — the two-pump data-plane helper (alknet //! ADR-078, pinned upstream by ADR-050). //! - [`relay`]: `ChannelRelay` — the in-tree relay component (ADR-042 //! as amended by ADR-051): translate hop + `pump_bidi` byte-forward //! hop for from_call-imported marked specs re-exposed on a hub's //! consumer-leg channel-0 registry. //! - [`resource`]: `ResourceEnumerators` — the enumerator registry //! behind `channel/resources/subscribe`'s live subscription //! (ADR-053). //! - [`hub_leg`]: `HubLegTemplate` — the hub-leg install template //! (ADR-051 §5): fork + generic channel ops + bootstrap discovery + //! plain bundles + relay openables + serving identity, composed into //! the `install_channel_zero` hook every hub side needs. //! - [`client`]: `ChannelClient` — transport-agnostic //! `from_connection` (ADR-043). //! - [`self::env`]: `ChannelOperationEnv` extension trait (ADR-047 §4 — //! keeps the call crate free of channels types). //! //! See `docs/architecture/` for the full specification. pub mod adapter; pub mod client; pub mod env; pub mod hub_leg; pub mod manager; pub mod mux; pub mod operations; pub mod policy; pub mod pump; pub mod reassembly; pub mod relay; pub mod resource; pub mod source; pub mod wire;