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

Struct UFrameMetadataAbiV1

Source
#[repr(C)]
pub struct UFrameMetadataAbiV1 {
Show 21 fields pub magic: [u8; 4], pub version: u8, pub flags: u8, pub metadata_size: u16, pub presence: u32, pub kind: u8, pub priority: u8, pub comm_status: u8, pub _reserved0: u8, pub ttl_ns: u64, pub permission_level: u32, pub _reserved1: u32, pub id: UUuidAbi, pub reqid: UUuidAbi, pub payload_size: u64, pub payload_encoding: UPayloadEncodingAbi, pub source: UUriAbi, pub sink: UUriAbi, pub traceparent: UTraceparentAbi, pub token: UTokenAbi, pub _reserved_tail: [u8; 4],
}
Expand description

Fixed-layout ABI profile v1 of native frame metadata.

size 1096, align 8, no implicit padding. A field guarded by a FIELD_* presence bit is meaningful only when that bit is set; producers MUST zero absent fields. payload_size is meaningful if and only if FIELD_PAYLOAD_ENCODING is set (the v1 invariant: a frame carries payload bytes exactly when it declares a payload encoding).

Fields§

§magic: [u8; 4]

MUST equal UFRAME_ABI_MAGIC.

§version: u8

MUST equal UFRAME_ABI_VERSION.

§flags: u8

See UFRAME_ABI_FLAG_*.

§metadata_size: u16

MUST equal UFRAME_ABI_SIZE in v1; consumers use this to skip trailing fields added by newer minor revisions.

§presence: u32

Bitwise OR of FIELD_* presence bits (shared with the canonical field block).

§kind: u8

FrameMessageKind wire code (1..=4).

§priority: u8

FramePriority wire code; 0 = absent.

§comm_status: u8

UCode value; valid iff FIELD_COMM_STATUS.

§_reserved0: u8

MUST be zero.

§ttl_ns: u64

Time-to-live in nanoseconds; valid iff FIELD_TTL.

§permission_level: u32§_reserved1: u32

MUST be zero.

§id: UUuidAbi

Message id as a fixed-layout UUID.

§reqid: UUuidAbi

Valid iff FIELD_REQID.

§payload_size: u64

Number of payload bytes belonging to the frame; valid iff FIELD_PAYLOAD_ENCODING, MUST be zero otherwise.

§payload_encoding: UPayloadEncodingAbi§source: UUriAbi

Source address as a fixed-layout URI.

§sink: UUriAbi

Valid iff FIELD_SINK.

§traceparent: UTraceparentAbi

Valid iff FIELD_TRACEPARENT.

§token: UTokenAbi

Valid iff FIELD_TOKEN.

§_reserved_tail: [u8; 4]

MUST be zero.

Implementations§

Source§

impl UFrameMetadataAbiV1

Source

pub fn try_from_metadata( metadata: &UFrameMetadata, payload_size: Option<u64>, ) -> Result<Self, UFrameAbiError>

Converts semantic frame metadata (plus the frame’s payload size, when it carries a payload) into the fixed ABI profile.

payload_size must be Some exactly when the metadata has a payload encoding, mirroring the frame-level invariant.

§Errors

Returns an error if the metadata is invalid, payload presence is inconsistent, or a value exceeds a profile capacity. Conversion never truncates.

Source

pub fn try_to_metadata( &self, ) -> Result<(UFrameMetadata, Option<u64>), UFrameAbiError>

Converts this profile value back into semantic frame metadata plus the frame’s payload size (when the frame carries a payload).

§Errors

Returns an error if the profile value is structurally invalid or decodes into invalid metadata.

Trait Implementations§

Source§

impl Clone for UFrameMetadataAbiV1

Source§

fn clone(&self) -> UFrameMetadataAbiV1

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 UFrameMetadataAbiV1

Source§

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

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

impl Default for UFrameMetadataAbiV1

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for UFrameMetadataAbiV1

Source§

fn eq(&self, other: &UFrameMetadataAbiV1) -> 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 Copy for UFrameMetadataAbiV1

Source§

impl StructuralPartialEq for UFrameMetadataAbiV1

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
§

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>

§

impl<T> AsOut<T> for T
where T: Copy,

§

fn as_out(&mut self) -> Out<'_, T>

Returns an out reference to self.
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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> 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.
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