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§
Required Methods§
sourcefn object_data(&self) -> Option<&Arc<dyn Any + Send + Sync>>
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.
sourcefn handle(&self) -> &WeakHandle
fn handle(&self) -> &WeakHandle
Access the backend handle associated with this object
sourcefn from_id(dh: &DisplayHandle, id: ObjectId) -> Result<Self, InvalidId>
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.
sourcefn send_event(&self, evt: Self::Event<'_>) -> Result<(), InvalidId>
fn send_event(&self, evt: Self::Event<'_>) -> Result<(), InvalidId>
Send an event to this object
sourcefn parse_request(
dh: &DisplayHandle,
msg: Message<ObjectId, OwnedFd>,
) -> Result<(Self, Self::Request), DispatchError>
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.
sourcefn write_event<'a>(
&self,
dh: &DisplayHandle,
req: Self::Event<'a>,
) -> Result<Message<ObjectId, BorrowedFd<'a>>, InvalidId>
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§
sourcefn client(&self) -> Option<Client>
fn client(&self) -> Option<Client>
The client owning this object
Returns None
if the object is no longer alive.
sourcefn is_alive(&self) -> bool
fn is_alive(&self) -> bool
Checks if the Wayland object associated with this proxy is still alive
sourcefn post_error(&self, code: impl Into<u32>, error: impl Into<String>)
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.
sourcefn downgrade(&self) -> Weak<Self>
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.