Skip to main content

SopIngress

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>

Source

pub fn new( engine: Option<&'a Arc<Mutex<SopEngine>>>, audit: Option<&'a SopAuditLogger>, ) -> Self

Source

pub fn with_driver_sink(self, sink: &'a SopDriverSink) -> Self

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.

Source

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.

Source

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§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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 more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more