wayland_server

Trait Resource

source
pub trait Resource:
    Clone
    + Debug
    + Sized {
    type Event<'a>;
    type Request;

Show 14 methods // Required methods fn interface() -> &'static Interface; fn id(&self) -> ObjectId; fn version(&self) -> u32; fn data<U: 'static>(&self) -> Option<&U>; fn object_data(&self) -> Option<&Arc<dyn Any + Send + Sync>>; fn handle(&self) -> &WeakHandle; fn from_id(dh: &DisplayHandle, id: ObjectId) -> Result<Self, InvalidId>; fn send_event(&self, evt: Self::Event<'_>) -> Result<(), InvalidId>; fn parse_request( dh: &DisplayHandle, msg: Message<ObjectId, OwnedFd>, ) -> Result<(Self, Self::Request), DispatchError>; fn write_event<'a>( &self, dh: &DisplayHandle, req: Self::Event<'a>, ) -> Result<Message<ObjectId, BorrowedFd<'a>>, InvalidId>; // Provided methods fn client(&self) -> Option<Client> { ... } fn is_alive(&self) -> bool { ... } fn post_error(&self, code: impl Into<u32>, error: impl Into<String>) { ... } fn downgrade(&self) -> Weak<Self> { ... }
}
Expand description

Trait representing a Wayland interface

Required Associated Types§

source

type Event<'a>

The event enum for this interface

source

type Request

The request enum for this interface

Required Methods§

source

fn interface() -> &'static Interface

The interface description

source

fn id(&self) -> ObjectId

The ID of this object

source

fn version(&self) -> u32

The version of this object

source

fn data<U: 'static>(&self) -> Option<&U>

Access the user-data associated with this object

source

fn object_data(&self) -> Option<&Arc<dyn Any + Send + Sync>>

Access the raw data associated with this object.

It is given to you as a dyn Any, and you are responsible for downcasting it.

For objects created using the scanner-generated methods, this will be an instance of the ResourceData type.

source

fn handle(&self) -> &WeakHandle

Access the backend handle associated with this object

source

fn from_id(dh: &DisplayHandle, id: ObjectId) -> Result<Self, InvalidId>

Create an object resource from its ID

Returns an error this the provided object ID does not correspond to the Self interface.

Note: This method is mostly meant as an implementation detail to be used by code generated by wayland-scanner.

source

fn send_event(&self, evt: Self::Event<'_>) -> Result<(), InvalidId>

Send an event to this object

source

fn parse_request( dh: &DisplayHandle, msg: Message<ObjectId, OwnedFd>, ) -> Result<(Self, Self::Request), DispatchError>

Parse a event for this object

Note: This method is mostly meant as an implementation detail to be used by code generated by wayland-scanner.

source

fn write_event<'a>( &self, dh: &DisplayHandle, req: Self::Event<'a>, ) -> Result<Message<ObjectId, BorrowedFd<'a>>, InvalidId>

Serialize an event for this object

Note: This method is mostly meant as an implementation detail to be used by code generated by wayland-scanner.

Provided Methods§

source

fn client(&self) -> Option<Client>

The client owning this object

Returns None if the object is no longer alive.

source

fn is_alive(&self) -> bool

Checks if the Wayland object associated with this proxy is still alive

source

fn post_error(&self, code: impl Into<u32>, error: impl Into<String>)

Trigger a protocol error on this object

The code is intended to be from the Error enum declared alongside that object interface.

A protocol error is fatal to the Wayland connection, and the client will be disconnected.

source

fn downgrade(&self) -> Weak<Self>

Creates a weak handle to this object

This weak handle will not keep the user-data associated with the object alive, and can be converted back to a full resource using Weak::upgrade().

This can be of use if you need to store resources in the used data of other objects and want to be sure to avoid reference cycles that would cause memory leaks.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

source§

impl Resource for WlBuffer

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlCallback

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlCompositor

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlDataDevice

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlDataDeviceManager

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlDataOffer

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlDataSource

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlKeyboard

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlOutput

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlPointer

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlRegion

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlSeat

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlShell

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlShellSurface

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlShm

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlShmPool

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlSubcompositor

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlSubsurface

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlSurface

source§

type Request = Request

source§

type Event<'event> = Event<'event>

source§

impl Resource for WlTouch

source§

type Request = Request

source§

type Event<'event> = Event<'event>