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 + Sync
bounds
§Type Parameters
Req
: The request type that implementsData
Resp
: The response type that implements bothData
andAsyncEngineContextProvider
E
: 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>
.