Skip to main content

SourceSynchronousProxy

Struct SourceSynchronousProxy 

Source
pub struct SourceSynchronousProxy { /* private fields */ }

Implementations§

Source§

impl SourceSynchronousProxy

Source

pub fn new(channel: Channel) -> Self

Source

pub fn into_channel(self) -> Channel

Source

pub fn wait_for_event( &self, deadline: MonotonicInstant, ) -> Result<SourceEvent, Error>

Waits until an event arrives and returns it. It is safe for other threads to make concurrent requests while waiting for an event.

Source

pub fn get_spec( &self, ___deadline: MonotonicInstant, ) -> Result<SourceGetSpecResult, Error>

Returns static hardware characteristics that do not change during operation.

Source

pub fn get_status( &self, ___deadline: MonotonicInstant, ) -> Result<SourceGetStatusResult, Error>

Returns dynamic status of the source immediately.

Source

pub fn set_role( &self, role: &Role, ___deadline: MonotonicInstant, ) -> Result<SourceSetRoleResult, Error>

Set the role of this specific node.

Errors:

  • INVALID_ARGS: If the provided role is invalid.
  • NOT_SUPPORTED: If the requested role is not supported by the hardware.
  • INTERNAL: If an unexpected error occurred.
Source

pub fn watch( &self, interest: &Status, wake_on: &Status, lease: Option<EventPair>, ___deadline: MonotonicInstant, ) -> Result<(Status, Option<EventPair>), Error>

Change notification for power source state using a “hanging-get” pattern.

The first call to this method returns the current hardware state immediately. Subsequent calls block until a change occurs that matches the provided masks.

At most one Watch call may be outstanding at a time per connection. Completing a call acknowledges that the client has received the previous update.

§Power Management and Suspend

To prevent lost wakeups, the server (driver) must ensure that the Watch call remains active (and hardware interrupts armed) while the system is suspended.

  • Interest Triggers: If a change in the interest mask occurs while the system is suspended, the server MUST NOT complete the Watch call until the system wakes for another reason (e.g., a wake_on event or external trigger). This ensures the CPU remains asleep for non-critical updates.
  • Wake-On Triggers: If a change in the wake_on mask occurs, the server MUST wake the system and complete the call immediately with a wake_lease.

As a result of this queuing behavior, if multiple changes occur while the system is suspended, they may be merged into a single returned status table, and intermediate state transitions may be lost.

  • interest: The client wants to be notified if any of the fields present in this table change. If any field in interest changes, the method returns.
  • wake_on: Similar to interest, but if a change occurs in these fields, the server will attempt to keep the system awake using the provided lease (or by returning a wake_lease) until the client acknowledges the update.
  • lease: A power lease token used to coordinate handoff between the server and client, ensuring the system does not suspend before the client can process a critical power event.

Returns:

  • status: The updated status table containing the fields that changed.
  • wake_lease: An optional lease token provided if the change triggered a wake_on condition and the server is maintaining system state.

Trait Implementations§

Source§

impl Debug for SourceSynchronousProxy

Source§

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

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

impl From<Channel> for SourceSynchronousProxy

Available on Fuchsia only.
Source§

fn from(value: Channel) -> Self

Converts to this type from the input type.
Source§

impl From<SourceSynchronousProxy> for NullableHandle

Available on Fuchsia only.
Source§

fn from(value: SourceSynchronousProxy) -> Self

Converts to this type from the input type.
Source§

impl FromClient for SourceSynchronousProxy

Available on Fuchsia only.
Source§

type Protocol = SourceMarker

The protocol.
Source§

fn from_client(value: ClientEnd<SourceMarker>) -> Self

Converts from a client.
Source§

impl SynchronousProxy for SourceSynchronousProxy

Available on Fuchsia only.
Source§

type Proxy = SourceProxy

The async proxy for the same protocol.
Source§

type Protocol = SourceMarker

The protocol which this Proxy controls.
Source§

fn from_channel(inner: Channel) -> Self

Create a proxy over the given channel.
Source§

fn into_channel(self) -> Channel

Convert the proxy back into a channel.
Source§

fn as_channel(&self) -> &Channel

Get a reference to the proxy’s underlying channel. Read more
Source§

fn is_closed(&self) -> Result<bool, Status>

Returns true if the proxy has received the PEER_CLOSED signal. Read more

Auto Trait Implementations§

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, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. 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.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.