pub struct RegistryTaskSink { /* private fields */ }Expand description
TaskSink backed by a SessionTaskRegistry. Output deltas are dropped
here; kinds with live output keep their existing streaming path.
Carries attempt for stale-attempt fencing: every update includes
expected_attempt so writes from a superseded executor are rejected once
the reaper increments the attempt counter on the task record.
Implementations§
Source§impl RegistryTaskSink
impl RegistryTaskSink
pub fn new( registry: Arc<dyn SessionTaskRegistry>, session_id: SessionId, task_id: String, ) -> Self
Sourcepub fn with_attempt(self, attempt: i32) -> Self
pub fn with_attempt(self, attempt: i32) -> Self
Set the attempt number for fencing. Call this after reading the task record at start so the sink rejects writes once the attempt is bumped.
Trait Implementations§
Source§impl TaskSink for RegistryTaskSink
impl TaskSink for RegistryTaskSink
fn state<'life0, 'async_trait>(
&'life0 self,
state: SessionTaskState,
detail: Option<String>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn progress<'life0, 'async_trait>(
&'life0 self,
progress: TaskProgress,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn output<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_stream: &'life1 str,
_delta: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn output<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_stream: &'life1 str,
_delta: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
High-frequency output delta. Not persisted on the task record.
Source§fn post<'life0, 'async_trait>(
&'life0 self,
message: NewTaskMessage,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn post<'life0, 'async_trait>(
&'life0 self,
message: NewTaskMessage,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Outbound message to the session; may wake the parent per wake policy.
Source§fn request_input<'life0, 'async_trait>(
&'life0 self,
request: TaskInputRequest,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn request_input<'life0, 'async_trait>(
&'life0 self,
request: TaskInputRequest,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Ask the session for input; transitions the task to
awaiting_input.fn artifact<'life0, 'async_trait>(
&'life0 self,
artifact: TaskArtifact,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Auto Trait Implementations§
impl !RefUnwindSafe for RegistryTaskSink
impl !UnwindSafe for RegistryTaskSink
impl Freeze for RegistryTaskSink
impl Send for RegistryTaskSink
impl Sync for RegistryTaskSink
impl Unpin for RegistryTaskSink
impl UnsafeUnpin for RegistryTaskSink
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request