pub struct Intermediary<Server = (), Client = (), Resolver = (), Route = AllowAuthenticatedRoute, Policy = NoPipeline, Boundary = IdentityIntermediaryMiddleware, Cancellation = RejectCancellation> { /* private fields */ }Expand description
A reusable operational intermediary configuration.
Implementations§
Source§impl Intermediary<()>
impl Intermediary<()>
Sourcepub fn builder() -> IntermediaryBuilder
pub fn builder() -> IntermediaryBuilder
Starts composition of the two complete role configurations.
Source§impl<ST, SA, SM, Connector, CT, CA, CM, Resolver, Route, Policy, Boundary, K> Intermediary<Server<ST, SA, SM>, Client<Connector, CT, CA, CM>, Resolver, Route, Policy, Boundary, K>where
ST: ServerTlsConfiguration,
SA: ServerAuthenticationProvider,
CT: ClientTlsConfiguration,
CA: ClientAuthentication,
CM: MiddlewareFactory<ClientInitialContext>,
Policy: PipelinePolicy,
K: IntermediaryCancellationRegistry + Clone,
impl<ST, SA, SM, Connector, CT, CA, CM, Resolver, Route, Policy, Boundary, K> Intermediary<Server<ST, SA, SM>, Client<Connector, CT, CA, CM>, Resolver, Route, Policy, Boundary, K>where
ST: ServerTlsConfiguration,
SA: ServerAuthenticationProvider,
CT: ClientTlsConfiguration,
CA: ClientAuthentication,
CM: MiddlewareFactory<ClientInitialContext>,
Policy: PipelinePolicy,
K: IntermediaryCancellationRegistry + Clone,
Sourcepub async fn accept<DT, State, Peer, CW, UT, CE>(
&self,
transport: DT,
peer: Peer,
state: State,
) -> Result<IntermediaryAccept<IntermediaryConnection<DT, UT, State, Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity, CA::Evidence, <SM as MiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>>::Handler, <CM as MiddlewareFactory<ClientInitialContext>>::Handler, <Boundary as IntermediaryMiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>>::Handler, Policy, K>>, IntermediaryAcceptError<AcceptError<<ST::Provider as ServerIdentityProvider>::Error, <SA::Authentication as ServerAuthentication<Peer>>::Error>, Resolver::Error, Route::Error, ConnectError<CE, ClientTlsError<<CT::Provider as ClientTlsProvider>::Error>, ClientAuthenticationError<CA::Error>>, K::Error, CancelError<CE>>>where
DT: AsyncRead + AsyncWrite + Unpin,
UT: AsyncRead + AsyncWrite + Unpin,
SA::Authentication: ServerAuthentication<Peer>,
SM: MiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>,
<SM as MiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>>::Handler: ServerMiddleware<State, ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>,
Resolver: StartupRouteResolver<Peer>,
Connector: Fn(&ConnectTarget) -> CW,
CW: Future<Output = Result<UT, CE>>,
<CM as MiddlewareFactory<ClientInitialContext>>::Handler: ClientMiddleware<State, ClientConnectionContext<CA::Evidence>>,
Route: AuthenticatedRoutePolicy<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>,
Boundary: IntermediaryMiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>,
<Boundary as IntermediaryMiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>>::Handler: IntermediaryMiddleware<State, ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>,
pub async fn accept<DT, State, Peer, CW, UT, CE>(
&self,
transport: DT,
peer: Peer,
state: State,
) -> Result<IntermediaryAccept<IntermediaryConnection<DT, UT, State, Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity, CA::Evidence, <SM as MiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>>::Handler, <CM as MiddlewareFactory<ClientInitialContext>>::Handler, <Boundary as IntermediaryMiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>>::Handler, Policy, K>>, IntermediaryAcceptError<AcceptError<<ST::Provider as ServerIdentityProvider>::Error, <SA::Authentication as ServerAuthentication<Peer>>::Error>, Resolver::Error, Route::Error, ConnectError<CE, ClientTlsError<<CT::Provider as ClientTlsProvider>::Error>, ClientAuthenticationError<CA::Error>>, K::Error, CancelError<CE>>>where
DT: AsyncRead + AsyncWrite + Unpin,
UT: AsyncRead + AsyncWrite + Unpin,
SA::Authentication: ServerAuthentication<Peer>,
SM: MiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>,
<SM as MiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>>::Handler: ServerMiddleware<State, ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>>,
Resolver: StartupRouteResolver<Peer>,
Connector: Fn(&ConnectTarget) -> CW,
CW: Future<Output = Result<UT, CE>>,
<CM as MiddlewareFactory<ClientInitialContext>>::Handler: ClientMiddleware<State, ClientConnectionContext<CA::Evidence>>,
Route: AuthenticatedRoutePolicy<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>,
Boundary: IntermediaryMiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>,
<Boundary as IntermediaryMiddlewareFactory<ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>>::Handler: IntermediaryMiddleware<State, ServerConnectionContext<Peer, <SA::Authentication as ServerAuthentication<Peer>>::Identity>, ClientConnectionContext<CA::Evidence>>,
Establishes both independently authenticated roles around one shared state.
§Errors
Returns the typed failure from either role or routing policy, or explicit cancellation rejection.
Trait Implementations§
Auto Trait Implementations§
impl<Server, Client, Resolver, Route, Policy, Boundary, Cancellation> Freeze for Intermediary<Server, Client, Resolver, Route, Policy, Boundary, Cancellation>
impl<Server, Client, Resolver, Route, Policy, Boundary, Cancellation> RefUnwindSafe for Intermediary<Server, Client, Resolver, Route, Policy, Boundary, Cancellation>where
Server: RefUnwindSafe,
Client: RefUnwindSafe,
Resolver: RefUnwindSafe,
Route: RefUnwindSafe,
Policy: RefUnwindSafe,
Boundary: RefUnwindSafe,
Cancellation: RefUnwindSafe,
impl<Server, Client, Resolver, Route, Policy, Boundary, Cancellation> Send for Intermediary<Server, Client, Resolver, Route, Policy, Boundary, Cancellation>
impl<Server, Client, Resolver, Route, Policy, Boundary, Cancellation> Sync for Intermediary<Server, Client, Resolver, Route, Policy, Boundary, Cancellation>
impl<Server, Client, Resolver, Route, Policy, Boundary, Cancellation> Unpin for Intermediary<Server, Client, Resolver, Route, Policy, Boundary, Cancellation>
impl<Server, Client, Resolver, Route, Policy, Boundary, Cancellation> UnsafeUnpin for Intermediary<Server, Client, Resolver, Route, Policy, Boundary, Cancellation>where
Server: UnsafeUnpin,
Client: UnsafeUnpin,
Resolver: UnsafeUnpin,
Route: UnsafeUnpin,
Policy: UnsafeUnpin,
Boundary: UnsafeUnpin,
Cancellation: UnsafeUnpin,
impl<Server, Client, Resolver, Route, Policy, Boundary, Cancellation> UnwindSafe for Intermediary<Server, Client, Resolver, Route, Policy, Boundary, Cancellation>where
Server: UnwindSafe,
Client: UnwindSafe,
Resolver: UnwindSafe,
Route: UnwindSafe,
Policy: UnwindSafe,
Boundary: UnwindSafe,
Cancellation: UnwindSafe,
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more