mod builder;
mod builders;
mod form_eager;
mod form_out;
mod form_publish;
pub mod forms;
mod include;
mod mount;
mod routes;
mod routes_inject;
mod routes_publish;
mod sink;
pub use builder::Router;
#[doc(hidden)]
pub use builder::{AttachDeclaration, AttachRetry, RouterBroker};
#[doc(hidden)]
pub use builders::RouterCommit;
pub use builders::{MapPublisher, RouterOut, RouterPublishing, RouterPublishingOut, RouterWith};
#[doc(hidden)]
pub use mount::DefaultReply;
pub use mount::IncludeDef;
pub(crate) use mount::InputCodec;
#[doc(hidden)]
pub use mount::{
BatchPublishInjectMount, BatchPublishMount, PublishInjectMount, PublishMount,
RawReplyInjectMount, RawReplyMount, ReplyAttachment, RouterMount,
};
#[doc(hidden)]
pub use routes::{RetryDestinationsDeclared, RouteMetadata, RouteSubscription};
pub use routes::{RouterDef, RouterHandlers};
pub use sink::RouterSink;
use crate::Connected;
use crate::runtime::batch::{BatchDef, CarriedBatch, DeserializedBatch, TypedBatch};
use crate::runtime::subscriber_def::SubscriberDef;
use crate::runtime::typed::Typed;
use routes::{BatchRoute, SubscribeRoute};
use routes_inject::{BatchInjectRoute, InjectRoute};
use routes_publish::{BatchPublishingRoute, PublishingRoute, RawReplyRoute};
pub(crate) use crate::runtime::{SourceBatch, SourceMessage};
pub(crate) type TypedRoute<B, S, D, C> = SubscribeRoute<
S,
Typed<SourceMessage<B, S>, <D as SubscriberDef>::Input, C, <D as SubscriberDef>::Handler>,
<D as SubscriberDef>::Context,
>;
pub(crate) type IncludedRouter<B, S, D, C, RC, RL, RP, R> =
Router<B, (TypedRoute<B, S, D, C>, R), RC, RL, RP>;
pub(crate) type BatchTypedRoute<B, S, D, C> = BatchRoute<
S,
TypedBatch<SourceMessage<B, S>, <D as BatchDef>::Input, C, <D as BatchDef>::Handler>,
<D as BatchDef>::Context,
>;
pub(crate) type IncludedBatchRouter<B, S, D, C, RC, RL, RP, R> =
Router<B, (BatchTypedRoute<B, S, D, C>, R), RC, RL, RP>;
type DeserializedBatchRoute<B, S, D, F> = BatchRoute<
S,
DeserializedBatch<SourceMessage<B, S>, F, <D as BatchDef>::Handler>,
<D as BatchDef>::Context,
>;
type IncludedRawBatchRouter<B, S, D, F, RC, RL, RP, R> =
Router<B, (DeserializedBatchRoute<B, S, D, F>, R), RC, RL, RP>;
type CarriedBatchRoute<B, S, D, T> = BatchRoute<
S,
CarriedBatch<S, Connected<B>, T, <D as BatchDef>::Handler>,
<D as BatchDef>::Context,
>;
type IncludedCarriedBatchRouter<B, S, D, T, RC, RL, RP, R> =
Router<B, (CarriedBatchRoute<B, S, D, T>, R), RC, RL, RP>;
type InjectedRouter<B, S, D, C, E, RC, RL, RP, R> =
Router<B, (InjectRoute<S, D, C, E>, R), RC, RL, RP>;
type BatchInjectedRouter<B, S, D, C, E, RC, RL, RP, R> =
Router<B, (BatchInjectRoute<S, D, C, E>, R), RC, RL, RP>;
type PublishingRouter<B, S, D, C, Reply, E, RC, RL, RP, R> =
Router<B, (PublishingRoute<S, D, C, Reply, E>, R), RC, RL, RP>;
type RawReplyRouter<B, S, D, C, Reply, E, RC, RL, RP, R> =
Router<B, (RawReplyRoute<S, D, C, Reply, E>, R), RC, RL, RP>;
type BatchPublishingRouter<B, S, D, C, Reply, E, RC, RL, RP, R> =
Router<B, (BatchPublishingRoute<S, D, C, Reply, E>, R), RC, RL, RP>;
type MergedRouter<B, R2, C2, L2, P2, RC, RL, RP, R> =
Router<B, (Router<B, R2, C2, L2, P2>, R), RC, RL, RP>;