pub struct ReadEventsGuard { /* private fields */ }
Expand description

Guard for synchronizing event reading across multiple threads

If multiple threads need to read events from the Wayland socket concurrently, it is necessary to synchronize their access. Failing to do so may cause some of the threads to not be notified of new events, and sleep much longer than appropriate.

This guard is provided to ensure the proper synchronization is done. The guard is created using the Backend::prepare_read() method. And the event reading is triggered by consuming the guard using the read() method, synchronizing with other threads as necessary so that only one of the threads will actually perform the socket read.

If you plan to poll the Wayland socket for readiness, the file descriptor can be retrieved via the connection_fd method. Note that for the synchronization to correctly occur, you must always create the ReadEventsGuard before polling the socket.

Dropping the guard is valid and will cancel the prepared read.

Implementations

Access the Wayland socket FD for polling

Attempt to read events from the Wayland socket

If multiple threads have a live reading guard, this method will block until all of them are either dropped or have their read() method invoked, at which point one of the threads will read events from the socket and invoke the callbacks for the received events. All threads will then resume their execution.

This returns the number of dispatched events, or 0 if an other thread handled the dispatching. If no events are available to read from the socket, this returns a WouldBlock IO error.

Trait Implementations

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
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. Read more
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more
Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.