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

Trait UOwnedTransportImpl

Source
pub trait UOwnedTransportImpl: Send + Sync {
    // Required method
    fn send_validated_owned<'life0, 'async_trait>(
        &'life0 self,
        frame: UOwnedFrame,
    ) -> Pin<Box<dyn Future<Output = Result<(), UStatus>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;

    // Provided methods
    fn receive_validated_owned<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        _source_filter: &'life1 UUri,
        _sink_filter: Option<&'life2 UUri>,
    ) -> Pin<Box<dyn Future<Output = Result<UOwnedFrame, UStatus>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait { ... }
    fn register_validated_owned_listener<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        _source_filter: &'life1 UUri,
        _sink_filter: Option<&'life2 UUri>,
        _listener: Arc<dyn UOwnedListener>,
    ) -> Pin<Box<dyn Future<Output = Result<(), UStatus>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait { ... }
    fn unregister_validated_owned_listener<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        _source_filter: &'life1 UUri,
        _sink_filter: Option<&'life2 UUri>,
        _listener: Arc<dyn UOwnedListener>,
    ) -> Pin<Box<dyn Future<Output = Result<(), UStatus>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait { ... }
}
Expand description

Role: implemented by transports offering the owned-frame family; users call UOwnedTransport — see the trait map.

Role: called by users of the owned-frame family; transports implement UOwnedTransportImpl instead — see the trait map.

Implementation boundary for experimental owned native-frame transports.

Implementing this trait buys the public UOwnedTransport API, frame and filter validation, listener validation, and compatibility projections above the transport. Only the Validated frame state reaches the required send method — constructors validate, and the only path from Unvalidated is UOwnedFrame::validate — so req~owned-frame-validate-before-send~1 is enforced by the type system before delegation.

Send is required. Pull receive and listener registration have default unsupported implementations and are overridden only for carriage patterns the technology supports. UOwnedTransportCore is the different, selected-wire seam for transports that carry encoded metadata bytes.

Required Methods§

Source

fn send_validated_owned<'life0, 'async_trait>( &'life0 self, frame: UOwnedFrame, ) -> Pin<Box<dyn Future<Output = Result<(), UStatus>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Sends an already validated owned frame.

Provided Methods§

Source

fn receive_validated_owned<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _source_filter: &'life1 UUri, _sink_filter: Option<&'life2 UUri>, ) -> Pin<Box<dyn Future<Output = Result<UOwnedFrame, UStatus>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Receives one matching owned frame from transports that support pull receive.

Source

fn register_validated_owned_listener<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _source_filter: &'life1 UUri, _sink_filter: Option<&'life2 UUri>, _listener: Arc<dyn UOwnedListener>, ) -> Pin<Box<dyn Future<Output = Result<(), UStatus>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Registers an owned listener after public filter validation.

Source

fn unregister_validated_owned_listener<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _source_filter: &'life1 UUri, _sink_filter: Option<&'life2 UUri>, _listener: Arc<dyn UOwnedListener>, ) -> Pin<Box<dyn Future<Output = Result<(), UStatus>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Unregisters an owned listener after public filter validation.

Implementors§

Source§

impl UOwnedTransportImpl for InMemoryOwnedTransport

Source§

impl<TCore, W, C> UOwnedTransportImpl for UWireTransport<TCore, W, C>
where TCore: UOwnedTransportCore, W: UWire + Send + Sync + 'static, C: UWireMetadataCodecFor<W> + Clone + Send + Sync + 'static,