mod channel;
mod error;
mod origin;
mod registry;
mod shutdown;
mod sse;
mod websocket;
pub use channel::{Broadcast, ChannelError, ChannelPayload, Subscription};
pub use error::{ProtocolHint, RealtimeError, admission_status};
pub use origin::{OriginDecision, OriginPolicy, VerifiedOrigin};
pub use registry::{ConnectionGuard, Registry};
pub use shutdown::ShutdownConfig;
pub use sse::{SseEndpoint, SseLimits};
pub use websocket::{AllowAll, Authorizer, WebSocketEndpoint, WsLimits};
pub async fn drain(
registry: &Registry,
shutdown: &ShutdownConfig,
bound: std::time::Duration,
) -> Result<(), RealtimeError> {
shutdown.begin_drain();
registry.drain(bound).await
}