mod context;
mod dependencies;
mod error;
mod message_router;
mod runtime;
mod service;
mod session;
pub use crate::bus::{Message, MessageKind, PayloadDecodeError, SubscriptionPlan};
pub use context::Context;
pub use dependencies::{
ConfigurableOutboxPublisher, HasOutboxStore, HasReadModelStore, HasRepo,
ReadModelStoreDependencies, RepoDependencies, RepoReadModelDependencies,
};
pub use error::HandlerError;
pub use runtime::{DEFAULT_MAX_PUBLISH_ATTEMPTS, DEFAULT_PUBLISH_LEASE};
pub use service::{
CommandRequest, CommandResponse, DeliveryKind, HandlerNames, HandlerSpec, RouteBuilder, Routes,
Service,
};
pub use session::{Session, ROLE_KEY, USER_ID_KEY};
#[cfg(feature = "http")]
pub const MAX_HTTP_BODY_BYTES: usize = 1024 * 1024;
#[cfg(feature = "http")]
mod http;
#[cfg(feature = "http")]
pub use http::{router, serve};
#[cfg(feature = "http")]
mod knative_ingress;
#[cfg(feature = "http")]
pub use knative_ingress::cloud_events_router;
#[cfg(feature = "grpc")]
pub mod grpc;
#[cfg(feature = "grpc")]
pub use grpc::{grpc_server, serve_grpc, GrpcServeError};
#[macro_export]
macro_rules! routes {
($routes:expr $(,)?) => {
$routes
};
($routes:expr, $($rest:tt)+) => {
$crate::__routes!($routes, $($rest)+)
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __routes {
($routes:expr, command $($seg:ident)::+ $(, $($rest:tt)*)?) => {
$crate::__routes_continue!(
$routes.command($($seg)::+::COMMAND).guarded(
$($seg)::+::guard,
$($seg)::+::handle,
)
$(, $($rest)*)?
)
};
($routes:expr, event $($seg:ident)::+ $(, $($rest:tt)*)?) => {
$crate::__routes_continue!(
$routes.event($($seg)::+::EVENT).guarded(
$($seg)::+::guard,
$($seg)::+::handle,
)
$(, $($rest)*)?
)
};
($routes:expr, events $($seg:ident)::+ $(, $($rest:tt)*)?) => {
$crate::__routes_continue!(
$routes.events($($seg)::+::EVENTS).guarded(
$($seg)::+::guard,
$($seg)::+::handle,
)
$(, $($rest)*)?
)
};
($routes:expr, $($seg:ident)::+ $(, $($rest:tt)*)?) => {
compile_error!(
"routes! entries must be prefixed with `command`, `event`, or `events`"
)
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __routes_continue {
($routes:expr) => {
$routes
};
($routes:expr,) => {
$routes
};
($routes:expr, $($rest:tt)+) => {
$crate::__routes!($routes, $($rest)+)
};
}