Struct SopIngress
pub struct SopIngress<'a> { /* private fields */ }Expand description
Borrowed, per-call adapter from transport deliveries into canonical SOP events.
This is the ingress boundary for untrusted fan-in sources. Transport adapters retain ownership of protocol parsing and identifiers; this adapter owns handle validation, source-interest gating, input capping, event stamping, dispatch, and headless result diagnostics. It borrows the daemon’s canonical engine and audit handles and does not cache config or SOP state.
Implementations§
Source§impl<'a> SopIngress<'a>
impl<'a> SopIngress<'a>
pub fn new( engine: Option<&'a Arc<Mutex<SopEngine>>>, audit: Option<&'a SopAuditLogger>, ) -> SopIngress<'a>
Sourcepub fn with_driver_sink(self, sink: &'a SopDriverSink) -> SopIngress<'a>
pub fn with_driver_sink(self, sink: &'a SopDriverSink) -> SopIngress<'a>
Attach the shared driver supervisor. Callers that omit this keep the previous behavior; callers whose triggers can start auto-mode runs (channel ingress) must attach it or their runs are created undriven.
Sourcepub async fn dispatch(
&self,
source: SopTriggerSource,
topic: Option<&str>,
payload: Option<&str>,
target_sop: Option<&str>,
dedup: Option<(String, bool)>,
) -> SopIngressOutcome
pub async fn dispatch( &self, source: SopTriggerSource, topic: Option<&str>, payload: Option<&str>, target_sop: Option<&str>, dedup: Option<(String, bool)>, ) -> SopIngressOutcome
Lift one untrusted transport delivery into the shared SOP path.
Sourcepub async fn dispatch_deduplicated(
&self,
source: SopTriggerSource,
topic: Option<&str>,
payload: Option<&str>,
target_sop: Option<&str>,
dedup_key: String,
) -> SopIngressOutcome
pub async fn dispatch_deduplicated( &self, source: SopTriggerSource, topic: Option<&str>, payload: Option<&str>, target_sop: Option<&str>, dedup_key: String, ) -> SopIngressOutcome
Lift a fresh delivery with a semantic key shared across independent producers. If another producer already started the same SOP under this key and that run is still active, dispatch coalesces into it. This is intentionally distinct from AMQP redelivery idempotency: both callers are fresh and neither should mark the key ambiguous.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for SopIngress<'a>
impl<'a> !UnwindSafe for SopIngress<'a>
impl<'a> Freeze for SopIngress<'a>
impl<'a> Send for SopIngress<'a>
impl<'a> Sync for SopIngress<'a>
impl<'a> Unpin for SopIngress<'a>
impl<'a> UnsafeUnpin for SopIngress<'a>
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
§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