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>
impl<D> Backend<D>
sourcepub fn flush(&mut self, client: Option<ClientId>) -> Result<(), Error>
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.
sourcepub fn handle(&self) -> Handle
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.
sourcepub fn poll_fd(&self) -> BorrowedFd<'_>
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.
sourcepub fn dispatch_single_client(
&mut self,
data: &mut D,
client_id: ClientId,
) -> Result<usize, Error>
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()
.
sourcepub fn dispatch_all_clients(&mut self, data: &mut D) -> Result<usize, Error>
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§
Auto Trait Implementations§
impl<D> Freeze for Backend<D>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.