Preview of the proposed up-rust native-frame-model branch (up-rust b6b99c6d, up-spec f0e9b17) — not released documentation. branch · write-up

Struct UWireRx

Source
pub struct UWireRx<Rx, W, C>
where W: UWire,
{ /* private fields */ }
Expand description

Public zero-copy receive lease after selected-wire metadata validation.

Implementations§

Source§

impl<Rx, W, C> UWireRx<Rx, W, C>

Source

pub fn try_from_encoded(raw: Rx, codec: &C) -> Result<Self, UStatus>

Decodes metadata from a raw encoded receive object and validates the public frame view.

§Errors

Returns an error if metadata bytes are malformed, selected-wire checks fail, or the resulting public frame view violates transport invariants.

Source

pub fn raw(&self) -> &Rx

Returns the raw encoded receive object behind this public wrapper.

Source

pub fn into_raw(self) -> Rx

Consumes the public wrapper and returns the raw encoded receive object.

Source

pub fn decode_payload<T>(&self) -> Result<T, UWireError>
where W: UWirePayload<T>, <W as UWirePayload<T>>::Codec: ReadDecodePayload<T>,

Decodes this frame’s payload using the selected wire W.

Prefer this selected-wire helper on receive values produced by explicit selected-wire adapter construction. Use UFrameView::decode_payload_from_reader_as only for low-level codec escape hatches.

§Errors

Returns an error if the frame has missing or incompatible payload encoding, has no payload, or if the selected wire cannot decode the payload bytes.

Source§

impl<Rx, W, C> UWireRx<Rx, W, C>

Source

pub fn borrow_payload<T>(&self) -> Result<&T, UWireError>
where W: UWirePayload<T>, <W as UWirePayload<T>>::Codec: BorrowPayload<T>,

Borrows this frame’s payload using the selected wire’s payload mapping.

This is the selected-wire true zero-copy receive helper. It requires the raw receive frame to prove that the contiguous payload is loan-backed and requires the selected wire’s mapped codec to support typed borrowing.

§Errors

Returns an error if the frame has no payload, has missing or incompatible payload encoding, cannot expose one loan-backed contiguous payload, or if the selected codec cannot borrow T from those bytes.

Trait Implementations§

Source§

impl<Rx, W, C> Debug for UWireRx<Rx, W, C>
where W: UWire,

Source§

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

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

impl<Rx, W, C> UFrameView for UWireRx<Rx, W, C>

Source§

type PayloadReader<'a> = <Rx as UEncodedRxFrame>::PayloadReader<'a> where Self: 'a

Reader over the payload bytes in order.
Source§

type PayloadSlices<'a> = <Rx as UEncodedRxFrame>::PayloadSlices<'a> where Self: 'a

Iterator over the payload’s storage segments in order.
Source§

fn metadata(&self) -> &UFrameMetadata

Returns the native frame metadata.
Source§

fn payload_len(&self) -> usize

Returns the number of application payload bytes visible through this view.
Source§

fn has_payload(&self) -> bool

Returns whether this view carries a payload, including a present empty payload.
Source§

fn payload_reader(&self) -> Self::PayloadReader<'_>

Returns an ordered reader over the application payload bytes.
Source§

fn payload_slices(&self) -> Self::PayloadSlices<'_>

Returns ordered borrowed payload slices.
Source§

fn try_contiguous_payload(&self) -> Option<&[u8]>

Returns a contiguous borrowed payload view when this view can provide one without copying.
Source§

fn decode_payload_from_reader_as<C, T>(&self) -> Result<T, UWireError>

Decodes this frame view from its ordered payload reader with codec C. Read more
Source§

impl<Rx, W, C> ULoanedContiguousZeroCopyRxFrame for UWireRx<Rx, W, C>

Source§

fn loaned_contiguous_payload(&self) -> Result<LoanedPayload<'_>, UWireError>

Returns one contiguous loan-backed application payload view. Read more
Source§

fn payload_loan_provenance(&self) -> Result<PayloadLoanProvenance, UWireError>

Returns diagnostic provenance for successful loaned payload borrows.
Source§

fn try_loaned_contiguous_payload(&self) -> Result<&[u8], UWireError>

Returns only loan-backed contiguous payload bytes.
Source§

fn borrow_stable_payload<T>(&self) -> Result<&T, UWireError>
where T: StablePayload,

Borrows one stable-container value from loan-backed contiguous storage.
Source§

fn borrow_payload_as<C, T>(&self) -> Result<&T, UWireError>
where C: BorrowPayload<T>,

Borrows one typed value from loan-backed contiguous storage using codec C. Read more
Source§

impl<Rx, W, C> UZeroCopyRxLease for UWireRx<Rx, W, C>

Auto Trait Implementations§

§

impl<Rx, W, C> Freeze for UWireRx<Rx, W, C>
where Rx: Freeze,

§

impl<Rx, W, C> RefUnwindSafe for UWireRx<Rx, W, C>

§

impl<Rx, W, C> Send for UWireRx<Rx, W, C>
where Rx: Send, W: Send, C: Send,

§

impl<Rx, W, C> Sync for UWireRx<Rx, W, C>
where Rx: Sync, W: Sync, C: Sync,

§

impl<Rx, W, C> Unpin for UWireRx<Rx, W, C>
where Rx: Unpin, W: Unpin, C: Unpin,

§

impl<Rx, W, C> UnwindSafe for UWireRx<Rx, W, C>
where Rx: UnwindSafe, W: UnwindSafe, C: UnwindSafe,

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

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

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

impl<TCore> UWithNativePrefixWire for TCore

Source§

fn into_native_prefix_wire_transport<W>( self, wire: W, ) -> UWireTransport<TCore, W, NativePrefixFrameMetadataCodec>
where W: UWire,

Wraps this core with an external or custom selected wire using canonical metadata.
Source§

fn into_protobuf_transport( self, ) -> UWireTransport<TCore, ProtobufWire, NativePrefixFrameMetadataCodec>

Wraps this core with the Protocol Buffers selected-wire profile.
Source§

fn into_stable_container_transport( self, ) -> UWireTransport<TCore, StableContainerWireFormat, NativePrefixFrameMetadataCodec>

Wraps this core with the stable-container selected-wire profile.
§

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