oa_gateway_core

Struct Envelope

Source
pub struct Envelope {
    pub id: MessageId,
    pub route: RouteKey,
    pub headers: BTreeMap<String, String>,
    pub content_type: ContentType,
    pub payload: Bytes,
}
Expand description

Protocol-agnostic unit of data that crosses the engine.

The engine reads only Self::route. Headers, content type, and payload are opaque and are cloned to every matching subscriber. Header names are namespaced by owner (oag., stomp., agra.); that convention is not enforced here.

Fields§

§id: MessageId

Gateway-assigned id, not a protocol message id.

§route: RouteKey

The only field crate::Engine::publish matches on.

§headers: BTreeMap<String, String>

String pairs adapters stamp and read. The engine never looks here.

§content_type: ContentType

How the payload is labelled, not how the engine parses it.

§payload: Bytes

Uninterpreted bytes. JSON, XML, or anything else.

Implementations§

Source§

impl Envelope

Source

pub fn new(route: RouteKey, payload: impl Into<Bytes>) -> Self

Builds an envelope with a fresh MessageId, no headers, and ContentType::octet_stream.

Call Self::with_content_type when the bytes are known to be JSON or XML. The default is octet-stream because this constructor does not inspect payload.

Source

pub fn with_content_type(self, content_type: ContentType) -> Self

Sets the content-type label. Does not parse or convert payload.

Source

pub fn with_header( self, key: impl Into<String>, value: impl Into<String>, ) -> Self

Inserts or replaces one header. Last write for a key wins.

Source

pub fn with_origin(self, id: &AdapterId) -> Self

Stamps HDR_ORIGIN so a bridging adapter can refuse its own echo. Last write wins.

Source

pub fn origin(&self) -> Option<&str>

Value of HDR_ORIGIN, if stamped.

Source

pub fn is_echo_of(&self, id: &AdapterId) -> bool

Whether this envelope was published by id’s inbound path.

Bridging adapters skip outbound-to-the-same-bus when this is true. The engine does not skip: one adapter id may cover many connections (OWP).

Trait Implementations§

Source§

impl Clone for Envelope

Source§

fn clone(&self) -> Envelope

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Envelope

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Envelope

Source§

fn eq(&self, other: &Envelope) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Envelope

Source§

impl StructuralPartialEq for Envelope

Auto Trait Implementations§

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

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.