pub trait AsyncEngine<Req: Send + Sync + 'static, Resp: AsyncEngineContextProvider, E: Data>: Send + Sync {
// Required method
fn generate<'life0, 'async_trait>(
&'life0 self,
request: Req,
) -> Pin<Box<dyn Future<Output = Result<Resp, E>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}Expand description
Engine is a trait that defines the interface for a streaming engine. The synchronous Engine version is does not need to be awaited.
This is the core trait for all async engine implementations. It provides:
- Generic type parameters for request, response, and error types
- Async generation capabilities with proper error handling
- Thread-safe design with
Send + Syncbounds
§Type Parameters
Req: The request type that implementsDataResp: The response type that implements bothDataandAsyncEngineContextProviderE: The error type that implementsData
§Implementation Notes
Implementations should ensure proper error handling and resource management.
The generate method should be cancellable via the response’s context provider.
Required Methods§
Implementors§
impl<In: PipelineIO + Sync, Out: PipelineIO> AsyncEngine<In, Out, Error> for SegmentSource<In, Out>
impl<In: PipelineIO + Sync, Out: PipelineIO> AsyncEngine<In, Out, Error> for ServiceFrontend<In, Out>
impl<T, U> AsyncEngine<Context<AddressedRequest<T>>, Pin<Box<dyn AsyncEngineStream<U, Item = U>>>, Error> for AddressedPushRouter
impl<T, U> AsyncEngine<Context<T>, Pin<Box<dyn AsyncEngineStream<U, Item = U>>>, Error> for PushRouter<T, U>
impl<T, U> AsyncEngine<Context<T>, Pin<Box<dyn AsyncEngineStream<U, Item = U>>>, Error> for Egress<SingleIn<T>, ManyOut<U>>
impl<UpIn, UpOut, DownIn, DownOut> AsyncEngine<UpIn, UpOut, Error> for PipelineOperator<UpIn, UpOut, DownIn, DownOut>
A PipelineOperator is an AsyncEngine for the upstream AsyncEngine<UpIn, UpOut, Error>.