starina_api::signal

Struct Signal

Source
pub struct Signal { /* private fields */ }
Expand description

A semaphore-like asynchronous inter-process communication primitive.

Each signal has 32-bit-wide bitfields. Updating the bitfields wakes up waiting processes. You can update the bitfields multiple times before it is cleared, but it can’t tell how many times it was updated. In other words, it guarantees bitfields are set at least once.

§Signal vs. Channel

While Signal cannot carry data more than bitfields, it is more lightweight and faster than Channel.

Use Signal when you need to notify other processes of an event, especially when you just want to wake up a sleeping process.

Implementations§

Source§

impl Signal

Source

pub fn create() -> Result<Signal, FtlError>

Creates a new signal.

Source

pub fn from_handle(handle: OwnedHandle) -> Signal

Instantiates the object from the given handle.

Source

pub fn handle(&self) -> &OwnedHandle

Returns the handle.

Source

pub fn update(&self, value: SignalBits) -> Result<(), FtlError>

Updates the signal. Non-blocking.

This bit-wise ORs the given value to the signal, and wakes up waiting processes if any.

Source

pub fn clear(&self) -> Result<SignalBits, FtlError>

Clears the signal, and returns the previous value. Non-blocking.

Trait Implementations§

Source§

impl Debug for Signal

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Signal

§

impl RefUnwindSafe for Signal

§

impl Send for Signal

§

impl Sync for Signal

§

impl Unpin for Signal

§

impl UnwindSafe for Signal

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

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.