pub struct ClientKernel<T> { /* private fields */ }Expand description
Reusable provider-neutral client policy kernel.
The kernel owns only its transport. It owns no executor, queue, clock,
retry policy, or request storage. Every in-flight request must consume a
caller-owned ClientWorkspaceLease.
Implementations§
Source§impl<T> ClientKernel<T>where
T: BlockingAuthenticatedTransport + BoundTransport,
impl<T> ClientKernel<T>where
T: BlockingAuthenticatedTransport + BoundTransport,
Sourcepub fn execute_blocking<O, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>where
O: ClientOperation,
pub fn execute_blocking<O, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>where
O: ClientOperation,
Prepares, authenticates, sends once, and checked-decodes synchronously.
Sourcepub fn execute_blocking_observed<O, V, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
observer: &V,
) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>
pub fn execute_blocking_observed<O, V, const N: usize>( &self, operation: &O, lease: ClientWorkspaceLease<'_, '_, N>, observer: &V, ) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>
Executes synchronously while emitting opt-in payload-free lifecycle events.
Source§impl<T> ClientKernel<T>
impl<T> ClientKernel<T>
Sourcepub fn execute_async<O, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
) -> impl Future<Output = Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>> + Sendwhere
O: ClientOperation + Sync,
O::Output: Send,
O::Error: Send,
O::DecodeError: Send,
T::Error: Send,
pub fn execute_async<O, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
) -> impl Future<Output = Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>> + Sendwhere
O: ClientOperation + Sync,
O::Output: Send,
O::Error: Send,
O::DecodeError: Send,
T::Error: Send,
Prepares, authenticates, sends once, and checked-decodes with a Send transport.
Sourcepub fn execute_async_observed<O, V, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
observer: &V,
) -> impl Future<Output = Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>> + Sendwhere
O: ClientOperation + Sync,
O::Output: Send,
O::Error: Send,
O::DecodeError: Send,
T::Error: Send,
V: DiagnosticObserver + Sync + ?Sized,
pub fn execute_async_observed<O, V, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
observer: &V,
) -> impl Future<Output = Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>> + Sendwhere
O: ClientOperation + Sync,
O::Output: Send,
O::Error: Send,
O::DecodeError: Send,
T::Error: Send,
V: DiagnosticObserver + Sync + ?Sized,
Executes with a Send transport and opt-in payload-free lifecycle events.
Source§impl<T> ClientKernel<T>where
T: LocalAsyncAuthenticatedTransport + BoundTransport,
impl<T> ClientKernel<T>where
T: LocalAsyncAuthenticatedTransport + BoundTransport,
Sourcepub async fn execute_local_async<O, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>where
O: ClientOperation,
pub async fn execute_local_async<O, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>where
O: ClientOperation,
Prepares, authenticates, sends once, and checked-decodes locally.
Sourcepub async fn execute_local_async_observed<O, V, const N: usize>(
&self,
operation: &O,
lease: ClientWorkspaceLease<'_, '_, N>,
observer: &V,
) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>
pub async fn execute_local_async_observed<O, V, const N: usize>( &self, operation: &O, lease: ClientWorkspaceLease<'_, '_, N>, observer: &V, ) -> Result<O::Output, ClientExecutionError<O::Error, T::Error, O::DecodeError>>
Executes locally while emitting opt-in payload-free lifecycle events.
Source§impl<T> ClientKernel<T>where
T: BlockingAuthenticatedTransport + BoundTransport,
impl<T> ClientKernel<T>where
T: BlockingAuthenticatedTransport + BoundTransport,
Sourcepub fn execute_blocking_with<'operation, O, R, P, D, F, G, const N: usize>(
&self,
operation: &'operation O,
lease: ClientWorkspaceLease<'_, '_, N>,
prepare: F,
decode: G,
) -> Result<R, ClientExecutionError<P, T::Error, D>>where
F: for<'guard> FnOnce(&'operation O, &'guard mut PreparationStorageGuard<'_>) -> Result<PreparedRequest<'guard>, P>,
G: FnOnce(&'operation O, ClientResponse<'_, '_>) -> Result<R, D>,
pub fn execute_blocking_with<'operation, O, R, P, D, F, G, const N: usize>(
&self,
operation: &'operation O,
lease: ClientWorkspaceLease<'_, '_, N>,
prepare: F,
decode: G,
) -> Result<R, ClientExecutionError<P, T::Error, D>>where
F: for<'guard> FnOnce(&'operation O, &'guard mut PreparationStorageGuard<'_>) -> Result<PreparedRequest<'guard>, P>,
G: FnOnce(&'operation O, ClientResponse<'_, '_>) -> Result<R, D>,
Executes through cleanup-owning provider preparation and decoding hooks.
Source§impl<T> ClientKernel<T>
impl<T> ClientKernel<T>
Sourcepub fn execute_async_with<'operation, O, R, P, D, F, G, const N: usize>(
&self,
operation: &'operation O,
lease: ClientWorkspaceLease<'_, '_, N>,
prepare: F,
decode: G,
) -> impl Future<Output = Result<R, ClientExecutionError<P, T::Error, D>>> + Sendwhere
O: Sync,
P: Send,
R: Send,
D: Send,
F: for<'guard> FnOnce(&'operation O, &'guard mut PreparationStorageGuard<'_>) -> Result<PreparedRequest<'guard>, P> + Send,
G: FnOnce(&'operation O, ClientResponse<'_, '_>) -> Result<R, D> + Send,
T::Error: Send,
pub fn execute_async_with<'operation, O, R, P, D, F, G, const N: usize>(
&self,
operation: &'operation O,
lease: ClientWorkspaceLease<'_, '_, N>,
prepare: F,
decode: G,
) -> impl Future<Output = Result<R, ClientExecutionError<P, T::Error, D>>> + Sendwhere
O: Sync,
P: Send,
R: Send,
D: Send,
F: for<'guard> FnOnce(&'operation O, &'guard mut PreparationStorageGuard<'_>) -> Result<PreparedRequest<'guard>, P> + Send,
G: FnOnce(&'operation O, ClientResponse<'_, '_>) -> Result<R, D> + Send,
T::Error: Send,
Send-async equivalent of Self::execute_blocking_with.
Source§impl<T> ClientKernel<T>where
T: LocalAsyncAuthenticatedTransport + BoundTransport,
impl<T> ClientKernel<T>where
T: LocalAsyncAuthenticatedTransport + BoundTransport,
Sourcepub async fn execute_local_async_with<'operation, O, R, P, D, F, G, const N: usize>(
&self,
operation: &'operation O,
lease: ClientWorkspaceLease<'_, '_, N>,
prepare: F,
decode: G,
) -> Result<R, ClientExecutionError<P, T::Error, D>>where
F: for<'guard> FnOnce(&'operation O, &'guard mut PreparationStorageGuard<'_>) -> Result<PreparedRequest<'guard>, P>,
G: FnOnce(&'operation O, ClientResponse<'_, '_>) -> Result<R, D>,
pub async fn execute_local_async_with<'operation, O, R, P, D, F, G, const N: usize>(
&self,
operation: &'operation O,
lease: ClientWorkspaceLease<'_, '_, N>,
prepare: F,
decode: G,
) -> Result<R, ClientExecutionError<P, T::Error, D>>where
F: for<'guard> FnOnce(&'operation O, &'guard mut PreparationStorageGuard<'_>) -> Result<PreparedRequest<'guard>, P>,
G: FnOnce(&'operation O, ClientResponse<'_, '_>) -> Result<R, D>,
Local-async equivalent of Self::execute_blocking_with.