Struct zircon_object::ipc::Channel [−][src]
Bidirectional interprocess communication
SYNOPSIS
A channel is a bidirectional transport of messages consisting of some amount of byte data and some number of handles.
DESCRIPTION
The process of sending a message via a channel has two steps. The first is to atomically write the data into the channel and move ownership of all handles in the message into this channel. This operation always consumes the handles: at the end of the call, all handles either are all in the channel or are all discarded. The second operation, channel read, is similar: on success all the handles in the next message are atomically moved into the receiving process’ handle table. On failure, the channel retains ownership.
Implementations
impl Channel
[src]
pub fn create() -> (Arc<Self>, Arc<Self>)
[src]
Create a channel and return a pair of its endpoints
pub fn check_and_read(
&self,
checker: impl FnOnce(&MessagePacket) -> ZxResult
) -> ZxResult<MessagePacket>
[src]
&self,
checker: impl FnOnce(&MessagePacket) -> ZxResult
) -> ZxResult<MessagePacket>
Read a packet from the channel if check is ok, otherwise the msg will keep.
pub fn read(&self) -> ZxResult<MessagePacket>
[src]
Read a packet from the channel
pub fn write(&self, msg: MessagePacket) -> ZxResult
[src]
Write a packet to the channel
pub async fn call(
self: &Arc<Self>,
msg: MessagePacket
) -> ZxResult<MessagePacket>
[src]
self: &Arc<Self>,
msg: MessagePacket
) -> ZxResult<MessagePacket>
Send a message to a channel and await a reply.
The first four bytes of the written and read back messages are treated as a transaction ID. The kernel generates a txid for the written message, replacing that part of the message as read from userspace.
msg.data
must have at lease a length of 4 bytes.
Trait Implementations
impl Debug for Channel
[src]
impl Drop for Channel
[src]
impl KernelObject for Channel
[src]
fn id(&self) -> KoID
[src]
fn type_name(&self) -> &str
[src]
fn name(&self) -> String
[src]
fn set_name(&self, name: &str)
[src]
fn signal(&self) -> Signal
[src]
fn signal_set(&self, signal: Signal)
[src]
fn signal_clear(&self, signal: Signal)
[src]
fn signal_change(&self, clear: Signal, set: Signal)
[src]
fn add_signal_callback(&self, callback: SignalHandler)
[src]
fn peer(&self) -> ZxResult<Arc<dyn KernelObject>>
[src]
fn related_koid(&self) -> KoID
[src]
fn get_child(&self, _id: KoID) -> ZxResult<Arc<dyn KernelObject>>
[src]
fn allowed_signals(&self) -> Signal
[src]
Auto Trait Implementations
impl !RefUnwindSafe for Channel
impl Send for Channel
impl Sync for Channel
impl Unpin for Channel
impl !UnwindSafe for Channel
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Downcast for T where
T: Any,
[src]
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
[src]
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
[src]
pub fn as_any(&self) -> &(dyn Any + 'static)
[src]
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
[src]
impl<T> DowncastSync for T where
T: Send + Sync + Any,
[src]
T: Send + Sync + Any,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,