Struct fdf::Channel

source ·
pub struct Channel<T: ?Sized + 'static>(/* private fields */);
Expand description

Implements a message channel through the Fuchsia Driver Runtime

Implementations§

source§

impl<T: ?Sized + 'static> Channel<T>

source

pub fn create() -> Result<(Self, Self), Status>

Creates a new channel pair that can be used to send messages of type T between threads managed by the driver runtime.

source

pub fn into_driver_handle(self) -> DriverHandle

Takes the inner handle to the channel. The caller is responsible for ensuring that the handle is freed.

source

pub unsafe fn from_driver_handle(handle: DriverHandle) -> Self

Initializes a Channel object from the given DriverHandle, assuming that it is a channel of type T.

§Safety

The caller must ensure that the handle is a Channel-based handle that is using type T as its wire format.

source

pub fn write(&self, message: Message<T>) -> Result<(), Status>

Writes the Message given to the channel. This will complete asynchronously and can’t be cancelled.

The channel will take ownership of the data and handles passed in,

source

pub fn write_with<F>(&self, arena: Arena, f: F) -> Result<(), Status>
where F: for<'a> FnOnce(&'a Arena) -> (Option<ArenaBox<'a, T>>, Option<ArenaBox<'a, [Option<MixedHandle>]>>),

Shorthand for calling Self::write with the result of Message::new_with

source

pub fn write_with_data<F>(&self, arena: Arena, f: F) -> Result<(), Status>
where F: for<'a> FnOnce(&'a Arena) -> ArenaBox<'a, T>,

Shorthand for calling Self::write with the result of Message::new_with

source§

impl<T> Channel<T>

source

pub fn try_read<'a>(&self) -> Result<Option<Message<T>>, Status>

Attempts to read an object of type T and a handle set from the channel

source

pub async fn read( &self, dispatcher: DispatcherRef<'_>, ) -> Result<Option<Message<T>>, Status>

Reads an object of type T and a handle set from the channel asynchronously

source§

impl Channel<[u8]>

source

pub fn try_read_bytes<'a>(&self) -> Result<Option<Message<[u8]>>, Status>

Attempts to read an object of type T and a handle set from the channel

source

pub async fn read_bytes( &self, dispatcher: DispatcherRef<'_>, ) -> Result<Option<Message<[u8]>>, Status>

Reads a slice of type T and a handle set from the channel asynchronously

Trait Implementations§

source§

impl<T: Debug + ?Sized + 'static> Debug for Channel<T>

source§

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

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

impl<T> From<Channel<T>> for MixedHandle

source§

fn from(value: Channel<T>) -> Self

Converts to this type from the input type.
source§

impl<T: Hash + ?Sized + 'static> Hash for Channel<T>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<T: Ord + ?Sized + 'static> Ord for Channel<T>

source§

fn cmp(&self, other: &Channel<T>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<T: PartialEq + ?Sized + 'static> PartialEq for Channel<T>

source§

fn eq(&self, other: &Channel<T>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: PartialOrd + ?Sized + 'static> PartialOrd for Channel<T>

source§

fn partial_cmp(&self, other: &Channel<T>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<T: Eq + ?Sized + 'static> Eq for Channel<T>

source§

impl<T: ?Sized + 'static> StructuralPartialEq for Channel<T>

Auto Trait Implementations§

§

impl<T> Freeze for Channel<T>
where T: ?Sized,

§

impl<T> RefUnwindSafe for Channel<T>
where T: RefUnwindSafe + ?Sized,

§

impl<T> Send for Channel<T>
where T: Send + ?Sized,

§

impl<T> Sync for Channel<T>
where T: Sync + ?Sized,

§

impl<T> Unpin for Channel<T>
where T: Unpin + ?Sized,

§

impl<T> UnwindSafe for Channel<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> 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, 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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.