pub struct ResequencerService { /* private fields */ }Expand description
Continuation-boundary resequencer.
Owns an actor task (consumes from input channel, calls policy.accept(input))
and a post-driver task (consumes ready exchanges, drives post_continuation).
Service::call(input) sends into the bounded input channel and returns an ack.
Implementations§
Source§impl ResequencerService
impl ResequencerService
Sourcepub fn new(
policy: Arc<dyn ResequencePolicy>,
post_continuation: BoxCloneService<Exchange, Exchange, CamelError>,
input_capacity: usize,
post_lifecycles: Vec<Arc<dyn StepLifecycle>>,
) -> Self
pub fn new( policy: Arc<dyn ResequencePolicy>, post_continuation: BoxCloneService<Exchange, Exchange, CamelError>, input_capacity: usize, post_lifecycles: Vec<Arc<dyn StepLifecycle>>, ) -> Self
Create a new resequencer with the given policy, continuation, and post-step lifecycles.
input_capacity— bounded channel capacity (default 1024). Backpressure propagates to the caller viasend().await.post_lifecycles— lifecycle handles for steps AFTER the resequencer (drained inshutdownafter post-driver quiesces; empty for Task 1a).
§Panics
Panics if called outside a Tokio runtime context: new() spawns the actor and
post-driver tasks via tokio::spawn.
Sourcepub fn with_config(
policy: Arc<dyn ResequencePolicy>,
post_continuation: BoxCloneService<Exchange, Exchange, CamelError>,
input_capacity: usize,
post_lifecycles: Vec<Arc<dyn StepLifecycle>>,
config: ResequencerConfig,
) -> Self
pub fn with_config( policy: Arc<dyn ResequencePolicy>, post_continuation: BoxCloneService<Exchange, Exchange, CamelError>, input_capacity: usize, post_lifecycles: Vec<Arc<dyn StepLifecycle>>, config: ResequencerConfig, ) -> Self
Full constructor with explicit ResequencerConfig.
§Panics
Panics if called outside a Tokio runtime context.
Trait Implementations§
Source§impl Clone for ResequencerService
impl Clone for ResequencerService
Source§fn clone(&self) -> ResequencerService
fn clone(&self) -> ResequencerService
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ResequencerService
impl Debug for ResequencerService
Source§impl Service<Exchange> for ResequencerService
impl Service<Exchange> for ResequencerService
Source§type Error = CamelError
type Error = CamelError
Errors produced by the service.
Source§type Future = Pin<Box<dyn Future<Output = Result<Exchange, CamelError>> + Send>>
type Future = Pin<Box<dyn Future<Output = Result<Exchange, CamelError>> + Send>>
The future response value.
Source§fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<Result<(), CamelError>>
fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<Result<(), CamelError>>
Returns
Poll::Ready(Ok(())) when the service is able to process requests. Read moreSource§impl StepLifecycle for ResequencerService
impl StepLifecycle for ResequencerService
Source§fn shutdown<'life0, 'async_trait>(
&'life0 self,
reason: StepShutdownReason,
) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn shutdown<'life0, 'async_trait>(
&'life0 self,
reason: StepShutdownReason,
) -> Pin<Box<dyn Future<Output = Result<(), CamelError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Idempotent shutdown with this ordering:
- Set shutdown flag; close/drop input_tx so actor sees EOF.
- Await actor JoinHandle (bounded deadline).
- policy.flush() → emit remaining in order via post-driver.
- Close post-driver channel sender so its loop sees EOF.
- Await post-driver JoinHandle with 5s deadline.
- Drain post-step lifecycles (oracle Fix 2).
Auto Trait Implementations§
impl !RefUnwindSafe for ResequencerService
impl !UnwindSafe for ResequencerService
impl Freeze for ResequencerService
impl Send for ResequencerService
impl Sync for ResequencerService
impl Unpin for ResequencerService
impl UnsafeUnpin for ResequencerService
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<P> Processor for P
Source§impl<T, Request> ServiceExt<Request> for T
impl<T, Request> ServiceExt<Request> for T
Source§fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
fn ready(&mut self) -> Ready<'_, Self, Request>where
Self: Sized,
Yields a mutable reference to the service when it is ready to accept a request.
Source§fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
fn ready_oneshot(self) -> ReadyOneshot<Self, Request>where
Self: Sized,
Yields the service when it is ready to accept a request.
Source§fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
fn oneshot(self, req: Request) -> Oneshot<Self, Request>where
Self: Sized,
Consume this
Service, calling it with the provided request once it is ready.Source§fn and_then<F>(self, f: F) -> AndThen<Self, F>
fn and_then<F>(self, f: F) -> AndThen<Self, F>
Executes a new future after this service’s future resolves. This does
not alter the behaviour of the
poll_ready method. Read moreSource§fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
fn map_response<F, Response>(self, f: F) -> MapResponse<Self, F>
Maps this service’s response value to a different value. This does not
alter the behaviour of the
poll_ready method. Read moreSource§fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
fn map_err<F, Error>(self, f: F) -> MapErr<Self, F>
Maps this service’s error value to a different value. This does not
alter the behaviour of the
poll_ready method. Read moreSource§fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
fn map_result<F, Response, Error>(self, f: F) -> MapResult<Self, F>
Maps this service’s result type (
Result<Self::Response, Self::Error>)
to a different value, regardless of whether the future succeeds or
fails. Read moreSource§fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
fn map_request<F, NewRequest>(self, f: F) -> MapRequest<Self, F>
Composes a function in front of the service. Read more
Source§fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
fn then<F, Response, Error, Fut>(self, f: F) -> Then<Self, F>
Composes an asynchronous function after this service. Read more
Source§fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
fn map_future<F, Fut, Response, Error>(self, f: F) -> MapFuture<Self, F>
Composes a function that transforms futures produced by the service. Read more