pub struct Backend<D>
where D: 'static,
{ /* private fields */ }
Expand description

A backend object that represents the state of a wayland server.

A backend is used to drive a wayland server by receiving requests, dispatching messages to the appropriate handlers and flushes requests to be sent back to the client.

Implementations§

source§

impl<D> Backend<D>

source

pub fn new() -> Result<Backend<D>, InitError>

Initialize a new Wayland backend

source

pub fn flush(&mut self, client: Option<ClientId>) -> Result<(), Error>

Flushes pending events destined for a client.

If no client is specified, all pending events are flushed to all clients.

source

pub fn handle(&self) -> Handle

Returns a handle which represents the server side state of the backend.

The handle provides a variety of functionality, such as querying information about wayland objects, obtaining data associated with a client and it’s objects, and creating globals.

source

pub fn poll_fd(&self) -> BorrowedFd<'_>

Returns the underlying file descriptor.

The file descriptor may be monitored for activity with a polling mechanism such as epoll or kqueue. When it becomes readable, this means there are pending messages that would be dispatched if you call Backend::dispatch_all_clients.

The file descriptor should not be used for any other purpose than monitoring it.

source

pub fn dispatch_single_client( &mut self, data: &mut D, client_id: ClientId ) -> Result<usize, Error>

Dispatches all pending messages from the specified client.

This method will not block if there are no pending messages.

The provided data will be provided to the handler of messages received from the client.

For performance reasons, use of this function should be integrated with an event loop, monitoring the file descriptor associated with the client and only calling this method when messages are available.

Note: This functionality is currently only available on the rust backend, invoking this method on the system backend will do the same as invoking Backend::dispatch_all_clients().

source

pub fn dispatch_all_clients(&mut self, data: &mut D) -> Result<usize, Error>

Dispatches all pending messages from all clients.

This method will not block if there are no pending messages.

The provided data will be provided to the handler of messages received from the clients.

For performance reasons, use of this function should be integrated with an event loop, monitoring the file descriptor retrieved by Backend::poll_fd and only calling this method when messages are available.

Trait Implementations§

source§

impl<D> Debug for Backend<D>
where D: Debug + 'static,

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<D> RefUnwindSafe for Backend<D>

§

impl<D> Send for Backend<D>

§

impl<D> Sync for Backend<D>

§

impl<D> Unpin for Backend<D>

§

impl<D> UnwindSafe for Backend<D>

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

§

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

§

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.