Struct SopDriverSink
pub struct SopDriverSink { /* private fields */ }Expand description
Owned spawner for headless run drivers at an ingress boundary.
Channel-triggered runs previously ended at process_headless_results,
which only logs that an ExecuteStep is ready: nothing executed the run
(the channel half of the headless-driver gap). Attaching this sink to SopIngress routes
every Started action from ANY caller into the same supervised handle set
the daemon’s SOP maintenance drains, so reload and cancellation ownership
cannot diverge by trigger source — the alternative, each caller spawning
and dropping its own JoinHandle, is exactly what this exists to prevent.
Implementations§
Source§impl SopDriverSink
impl SopDriverSink
pub fn new( config: Config, engine: Arc<Mutex<SopEngine>>, audit: Option<Arc<SopAuditLogger>>, handles: Arc<Mutex<SopDriverRegistry>>, ) -> SopDriverSink
Sourcepub fn handles(&self) -> Arc<Mutex<SopDriverRegistry>> ⓘ
pub fn handles(&self) -> Arc<Mutex<SopDriverRegistry>> ⓘ
The handle set this sink registers drivers into, for the owner that drains them across reload and shutdown.
Sourcepub fn drive(&self, action: &SopRunAction)
pub fn drive(&self, action: &SopRunAction)
Drive one dispatch action if it needs a headless driver. Finished handles are pruned on the way in so a long-lived daemon does not accumulate them.
Trait Implementations§
Source§impl Clone for SopDriverSink
impl Clone for SopDriverSink
Source§fn clone(&self) -> SopDriverSink
fn clone(&self) -> SopDriverSink
1.0.0 (const: unstable) · §fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for SopDriverSink
impl !UnwindSafe for SopDriverSink
impl Freeze for SopDriverSink
impl Send for SopDriverSink
impl Sync for SopDriverSink
impl Unpin for SopDriverSink
impl UnsafeUnpin for SopDriverSink
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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> ⓘ
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> ⓘ
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 more