Input

Struct Input 

Source
pub struct Input<T> { /* private fields */ }
Expand description

A typed Input that tries to automatically downcast or deserialize the data received in order to expose &T.

§Performance

If the data is received serialized from the upstream node, an allocation is performed to host the deserialized T.

Implementations§

Source§

impl<T: Send + Sync + 'static> Input<T>

Source

pub async fn recv(&self) -> Result<(Message<T>, Timestamp)>

Returns the first Message<T> that was received, asynchronously, on any of the channels associated with this Input.

If several Message<T> are received at the same time, one is randomly selected.

This method interprets the data to the type associated with this Input<T>.

§Performance

As this method interprets the data received additional operations are performed:

  • data received serialized is deserialized (an allocation is performed to store an instance of T),
  • data received “typed” are checked against the type associated to this Input<T>.
§Error

Several errors can occur:

  • all the channels are disconnected,
  • Zenoh-Flow failed at interpreting the received data as an instance of T.
Source

pub fn try_recv(&self) -> Result<(Message<T>, Timestamp)>

Returns the first Message<T> that was received on any of the channels associated with this Input, or None if all the channels are empty.

§Asynchronous alternative: recv

This method is a synchronous fail-fast alternative to it’s asynchronous counterpart: recv. Although synchronous, this method will not block the thread on which it is executed.

§Error

Several errors can occur:

  • no message was received (i.e. Empty error),
  • Zenoh-Flow failed at interpreting the received data as an instance of T.

Note that if some channels are disconnected, for each of such channel an error is logged.

Methods from Deref<Target = InputRaw>§

Source

pub fn port_id(&self) -> &PortId

Source

pub fn channels_count(&self) -> usize

Returns the number of channels associated with this Input.

Source

pub fn try_recv(&self) -> Result<LinkMessage>

Returns the first LinkMessage that was received on any of the channels associated with this Input, or an Empty error if there were no messages.

§Asynchronous alternative: recv

This method is a synchronous fail-fast alternative to it’s asynchronous counterpart: recv. Although synchronous, but given it is “fail-fast”, this method will not block the thread on which it is executed.

§Error

If no message was received, an Empty error is returned. Note that if some channels are disconnected, for each of such channel an error is logged.

Source

pub async fn recv(&self) -> Result<LinkMessage>

Returns the first LinkMessage that was received, asynchronously, on any of the channels associated with this Input.

If several LinkMessage are received at the same time, one is randomly selected.

§Error

An error is returned if all channels are disconnected. For each disconnected channel, an error is separately logged.

Trait Implementations§

Source§

impl<T: Send + Sync + 'static> Deref for Input<T>

Source§

type Target = InputRaw

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl<T> Freeze for Input<T>

§

impl<T> !RefUnwindSafe for Input<T>

§

impl<T> Send for Input<T>

§

impl<T> Sync for Input<T>

§

impl<T> Unpin for Input<T>

§

impl<T> !UnwindSafe for Input<T>

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> AsNode<T> for T

Source§

fn as_node(&self) -> &T

Source§

impl<T> AsNodeMut<T> for T

Source§

fn as_node_mut(&mut self) -> &mut T

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.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SendSyncAny for T
where T: 'static + Send + Sync,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn as_mut_any(&mut self) -> &mut (dyn Any + 'static)

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,