1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! `ramqp` — a from-scratch, **clean-room** AMQP 1.0 client.
//!
//! This crate implements the OASIS AMQP 1.0 specification from scratch with no
//! external AMQP dependencies: the entire type/encoding layer ([`codec`],
//! [`types`]) and the async runtime (transport → connection → session → link →
//! public API → resilience) are built here on top of generic building blocks
//! (`bytes`, `tokio`, `futures`).
//!
//! # Design pillars
//! - **Single-pass, zero-copy framing.** Bodies are exposed as [`bytes::Bytes`]
//! slices; transfer/body splitting is computed once from the negotiated
//! `max-frame-size` rather than by trial re-serialization.
//! - **Lock-free actor runtime.** One owning driver task per connection holds
//! all protocol state; user handles are cheap clones that exchange messages.
//! - **Flat, classified errors.** One error enum per public operation with a
//! `source()` chain and retry classification.
//! - **Pluggable observability.** A [`Metrics`](observe::Metrics) trait and a
//! connection-[`event`](observe::event) stream, usable without `tracing`.
//!
//! The crate is `#![forbid(unsafe_code)]`.
// ---- Clean-room encoding & type layer (re-exported from ramqp-core) ----
pub use codec;
pub use types;
// The composite-type codegen macro `amqp_composite!` is `#[macro_export]`ed
// from `ramqp-core`; re-export it so existing `crate::amqp_composite` /
// `ramqp::amqp_composite` paths keep resolving.
pub use amqp_composite;
// ---- Contracts (re-exported from ramqp-core where role-neutral) ----
pub use config;
pub use error;
pub use ids;
pub use observe;
pub use proto;
// ---- Runtime (Phases 1–6) ----
pub use link;
pub use session;
// ---- Transactions (clean-room, feature-gated) ----
// ---- Convenience re-exports ----
pub use ;
pub use Config;
pub use Delivery;
pub use ;
pub use TlsConfig;
pub use Message;