pub struct Channel { /* private fields */ }
Expand description

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

Create a channel and return a pair of its endpoints

Read a packet from the channel if check is ok, otherwise the msg will keep.

Read a packet from the channel

Write a packet to the channel

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

Formats the value using the given formatter. Read more

Executes the destructor for this type. Read more

Get object’s KoID.

Get the name of the type of the kernel object.

Get object’s name.

Set object’s name.

Get the signal status.

Assert signal.

Deassert signal.

Change signal status: first clear then set indicated bits. Read more

Add callback for signal status changes. Read more

Attempt to get the object’s peer. Read more

If the object is related to another (such as the other end of a channel, or the parent of a job), returns the KoID of that object, otherwise returns zero. Read more

Attempt to find a child of the object with given KoID. Read more

Get object’s allowed signals.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Casts the value.

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Casts the value.

Casts the value.

Casts the value.

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Casts the value.

Casts the value.

Casts the value.

Casts the value.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Casts the value.

Casts the value.

Casts the value.

Casts the value.