binder

Struct Accessor

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

Rust wrapper around ABinderRpc_Accessor objects for RPC binder service management.

Dropping the Accessor will drop the underlying object and the binder it owns.

Implementations§

Source§

impl Accessor

Source

pub fn new<F>(instance: &str, callback: F) -> Accessor
where F: Fn(&str) -> Option<ConnectionInfo> + Send + Sync + 'static,

Create a new accessor that will call the given callback when its connection info is required. The callback object and all objects it captures are owned by the Accessor and will be deleted some time after the Accessor is Dropped. If the callback is being called when the Accessor is Dropped, the callback will not be deleted immediately.

Source

pub fn from_binder(instance: &str, binder: SpIBinder) -> Option<Accessor>

Creates a new Accessor instance based on an existing Accessor’s binder. This is useful when the Accessor instance is hosted in another process that has the permissions to create the socket connection FD.

The instance argument must match the instance that the original Accessor is responsible for. instance must not contain null bytes and is used to create a CString to pass through FFI. The binder argument must be a valid binder from an Accessor

Source

pub fn as_binder(&self) -> Option<SpIBinder>

Get the underlying binder for this Accessor for when it needs to be either registered with service manager or sent to another process.

Trait Implementations§

Source§

impl Debug for Accessor

Source§

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

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

impl Drop for Accessor

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for Accessor

Safety: A Accessor is a wrapper around ABinderRpc_Accessor which is Sync and Send. As ABinderRpc_Accessor is threadsafe, this structure is too. The Fn owned the Accessor has Sync and Send properties

Source§

impl Sync for Accessor

Safety: A Accessor is a wrapper around ABinderRpc_Accessor which is Sync and Send. As ABinderRpc_Accessor is threadsafe, this structure is too. The Fn owned the Accessor has Sync and Send properties

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

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.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

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

fn as_any(&self) -> &(dyn Any + 'static)

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

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

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

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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.