#[non_exhaustive]pub struct EventContext {
pub message: InboundMessage,
pub container: Arc<FrozenDiContainer>,
pub trace: TraceContext,
pub tenant: Option<Arc<TenantConfig>>,
}Expand description
What an #[EventPattern] handler receives — DI + payload + trace, no
HTTP types anywhere.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.message: InboundMessage§container: Arc<FrozenDiContainer>§trace: TraceContextContinues the producer’s trace (or a fresh root when none was carried).
tenant: Option<Arc<TenantConfig>>The envelope’s tenant, resolved + validated against the same
TenantRegistry as HTTP traffic (suspended tenants never reach
handlers — their events are dead-lettered upstream).
Implementations§
Source§impl EventContext
impl EventContext
Sourcepub fn inject<T: Send + Sync + 'static>(&self) -> &T
pub fn inject<T: Send + Sync + 'static>(&self) -> &T
Resolve a singleton service. O(1), no locks. Panics when absent.
Sourcepub fn try_inject<T: Send + Sync + 'static>(&self) -> Option<&T>
pub fn try_inject<T: Send + Sync + 'static>(&self) -> Option<&T>
Non-panicking variant of Self::inject.
Sourcepub fn payload<T: DeserializeOwned>(&self) -> Result<T, EventError>
pub fn payload<T: DeserializeOwned>(&self) -> Result<T, EventError>
Deserialize the payload into a typed event.
A malformed payload is permanent by definition, so the error is
already EventError::DeadLetter — ctx.payload()? does the right
thing without manual mapping.
Sourcepub fn traceparent(&self) -> String
pub fn traceparent(&self) -> String
traceparent for forwarding to the next hop (HTTP call, next queue).
Auto Trait Implementations§
impl !RefUnwindSafe for EventContext
impl !UnwindSafe for EventContext
impl Freeze for EventContext
impl Send for EventContext
impl Sync for EventContext
impl Unpin for EventContext
impl UnsafeUnpin for EventContext
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> 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