arcly-http 0.4.0

Enterprise-grade NestJS-inspired web framework on axum: zero-lock DI, declarative controllers, multi-tenant data routing, transactional outbox, ABAC, and a self-documenting OpenAPI surface
Documentation
//! Real-time protocol engine: WebSocket gateways + Server-Sent Events.
//!
//! NestJS-Gateway ergonomics on a zero-cost, lock-free-on-the-hot-path Rust
//! core. Declare a gateway, subscribe to events, broadcast to rooms — without
//! ever naming an `axum`/`tower` type.
//!
//! ```ignore
//! #[Injectable]
//! pub struct ChatGateway { db: Inject<Db> }
//!
//! impl ArclyGateway for ChatGateway {
//!     async fn on_connect(&self, client: WsClient) { client.join_room("lobby"); }
//! }
//!
//! #[Gateway("/chat-socket")]
//! impl ChatGateway {
//!     #[Subscribe("message::send")]
//!     async fn on_message(&self, client: WsClient, payload: Json<ChatMessage>)
//!         -> Result<(), Error>
//!     {
//!         client.broadcast_to_room(&payload.room, "message::receive", &*payload).await;
//!         Ok(())
//!     }
//! }
//! ```
//!
//! See [`macros`] for the exact expansion contract and the rationale for the
//! `#[Gateway]`-on-impl placement.

pub mod connection;
pub mod gateway;
pub mod macros;
pub mod sse;
pub mod ws;

pub use connection::{ConnId, ConnectionRegistry, WsClient, WsMessage};
pub use gateway::{ArclyGateway, GatewayDescriptor, GatewayRuntime, LifecycleHook, MessageHandler};
pub use sse::{SseEvent, SseStream};
pub use ws::ws_route;

// Re-export the procedural macros so users write `arcly_http::realtime::Gateway`.
pub use arcly_http_macros::{Gateway, Subscribe};