rpcbinder

Struct RpcServer

Source
pub struct RpcServer(/* private fields */);
Expand description

A type that represents a foreign instance of RpcServer.

Implementations§

Source§

impl RpcServer

Source

pub fn new_vsock( service: SpIBinder, cid: u32, port: u32, ) -> Result<(RpcServer, u32), Error>

Creates a binder RPC server, serving the supplied binder service implementation on the given vsock port. Only connections from the given CID are accepted.

Set cid to [libc::VMADDR_CID_ANY] to accept connections from any client. Set cid to [libc::VMADDR_CID_LOCAL] to only bind to the local vsock interface. Set port to [libc::VMADDR_PORT_ANY] to pick an ephemeral port. The assigned port is returned with RpcServer.

Source

pub fn new_bound_socket( service: SpIBinder, socket_fd: OwnedFd, ) -> Result<RpcServer, Error>

Creates a binder RPC server, serving the supplied binder service implementation on the given socket file descriptor. The socket should be bound to an address before calling this function.

Source

pub fn new_unix_domain_bootstrap( service: SpIBinder, bootstrap_fd: OwnedFd, ) -> Result<RpcServer, Error>

Creates a binder RPC server that bootstraps sessions using an existing Unix domain socket pair, with a given root IBinder object. Callers should create a pair of SOCK_STREAM Unix domain sockets, pass one to the server and the other to the client. Multiple client session can be created from the client end of the pair.

Source

pub fn new_inet( service: SpIBinder, address: &str, port: u32, ) -> Result<RpcServer, Error>

Creates a binder RPC server, serving the supplied binder service implementation on the given IP address and port.

Methods from Deref<Target = RpcServerRef>§

Source

pub fn set_supported_file_descriptor_transport_modes( &self, modes: &[FileDescriptorTransportMode], )

Sets the list of file descriptor transport modes supported by this server.

Source

pub fn set_max_threads(&self, count: usize)

Sets the max number of threads this Server uses for incoming client connections.

This must be called before adding a client session. This corresponds to the number of incoming connections to RpcSession objects in the server, which will correspond to the number of outgoing connections in client RpcSession objects. Specifically this is useful for handling client-side callback connections.

If this is not specified, this will be a single-threaded server.

Source

pub fn start(&self)

Starts a new background thread and calls join(). Returns immediately.

Source

pub fn join(&self)

Joins the RpcServer thread. The call blocks until the server terminates. This must be called from exactly one thread.

Source

pub fn shutdown(&self) -> Result<(), Error>

Shuts down the running RpcServer. Can be called multiple times and from multiple threads. Called automatically during drop().

Trait Implementations§

Source§

impl AsRef<RpcServerRef> for RpcServer

Source§

fn as_ref(&self) -> &RpcServerRef

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<RpcServerRef> for RpcServer

Source§

fn borrow(&self) -> &RpcServerRef

Immutably borrows from an owned value. Read more
Source§

impl Debug for RpcServer

Source§

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

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

impl Deref for RpcServer

Source§

type Target = RpcServerRef

The resulting type after dereferencing.
Source§

fn deref(&self) -> &RpcServerRef

Dereferences the value.
Source§

impl DerefMut for RpcServer

Source§

fn deref_mut(&mut self) -> &mut RpcServerRef

Mutably dereferences the value.
Source§

impl Drop for RpcServer

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl ForeignType for RpcServer

Source§

type CType = ARpcServer

The raw C type.
Source§

type Ref = RpcServerRef

The type representing a reference to this type.
Source§

unsafe fn from_ptr(ptr: *mut ARpcServer) -> RpcServer

Constructs an instance of this type from its raw type.
Source§

fn as_ptr(&self) -> *mut ARpcServer

Returns a raw pointer to the wrapped value.
Source§

impl Send for RpcServer

SAFETY: The opaque handle can be cloned freely.

Source§

impl Sync for RpcServer

SAFETY: The underlying C++ RpcServer class is thread-safe.

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.