wl_client(3) Wayland wl_client(3) NAME wl_client SYNOPSIS Public Member Functions void wl_client_flush (struct wl_client *client) struct wl_display * wl_client_get_display (struct wl_client *client) void wl_client_get_credentials (struct wl_client *client, pid_t *pid, uid_t *uid, gid_t *gid) int wl_client_get_fd (struct wl_client *client) struct wl_resource * wl_client_get_object (struct wl_client *client, uint32_t id) void wl_client_post_implementation_error (struct wl_client *client, char const *msg,...) void wl_client_add_destroy_listener (struct wl_client *client, struct wl_listener *listener) void wl_client_add_destroy_late_listener (struct wl_client *client, struct wl_listener *listener) struct wl_list * wl_client_get_link (struct wl_client *client) struct wl_client * wl_client_from_link (struct wl_list *link) void wl_client_add_resource_created_listener (struct wl_client *client, struct wl_listener *listener) void wl_client_for_each_resource (struct wl_client *client, wl_client_for_each_resource_iterator_func_t iterator, void *user_data) Data Fields struct wl_connection * connection struct wl_event_source * source struct wl_display * display struct wl_resource * display_resource struct wl_list link struct wl_map objects struct wl_priv_signal destroy_signal struct wl_priv_signal destroy_late_signal pid_t pid uid_t uid gid_t gid int error struct wl_priv_signal resource_created_signal Member Function Documentation void wl_client_add_destroy_late_listener (struct wl_client * client, struct wl_listener * listener) Add a listener to be called at the end of wl_client destruction The listener provided will be called when wl_client destroy is nearly complete, after all of that client's resources have been destroyed. There is no requirement to remove the link of the wl_listener when the signal is emitted. Since 1.22.0 void wl_client_add_destroy_listener (struct wl_client * client, struct wl_listener * listener) Add a listener to be called at the beginning of wl_client destruction The listener provided will be called when wl_client destroy has begun, before any of that client's resources have been destroyed. There is no requirement to remove the link of the wl_listener when the signal is emitted. void wl_client_add_resource_created_listener (struct wl_client * client, struct wl_listener * listener) Add a listener for the client's resource creation signal Parameters client The client object listener The listener to be added When a new resource is created for this client the listener will be notified, carrying the new resource as the data argument. void wl_client_flush (struct wl_client * client) Flush pending events to the client Parameters client The client object Events sent to clients are queued in a buffer and written to the socket later - typically when the compositor has handled all requests and goes back to block in the event loop. This function flushes all queued up events for a client immediately. void wl_client_for_each_resource (struct wl_client * client, wl_client_for_each_resource_iterator_func_t iterator, void * user_data) Iterate over all the resources of a client Parameters client The client object iterator The iterator function user_data The user data pointer The function pointed by iterator will be called for each resource owned by the client. The user_data will be passed as the second argument of the iterator function. If the iterator function returns WL_ITERATOR_CONTINUE the iteration will continue, if it returns WL_ITERATOR_STOP it will stop. Creating and destroying resources while iterating is safe, but new resources may or may not be picked up by the iterator. See also wl_iterator_result struct wl_client * wl_client_from_link (struct wl_list * link) Get a wl_client by its link Parameters link The link of a wl_client See also wl_client_for_each() wl_display_get_client_list() wl_client_get_link() void wl_client_get_credentials (struct wl_client * client, pid_t * pid, uid_t * uid, gid_t * gid) Return Unix credentials for the client Parameters client The display object pid Returns the process ID uid Returns the user ID gid Returns the group ID This function returns the process ID, the user ID and the group ID for the given client. The credentials come from getsockopt() with SO_PEERCRED, on the client socket fd. All the pointers can be NULL, if the caller is not interested in a particular ID. Note, process IDs are subject to race conditions and are not a reliable way to identify a client. Be aware that for clients that a compositor forks and execs and then connects using socketpair(), this function will return the credentials for the compositor. The credentials for the socketpair are set at creation time in the compositor. struct wl_display * wl_client_get_display (struct wl_client * client) Get the display object for the given client Parameters client The client object Returns The display object the client is associated with. int wl_client_get_fd (struct wl_client * client) Get the file descriptor for the client Parameters client The display object Returns The file descriptor to use for the connection This function returns the file descriptor for the given client. Be sure to use the file descriptor from the client for inspection only. If the caller does anything to the file descriptor that changes its state, it will likely cause problems. See also wl_client_get_credentials(). It is recommended that you evaluate whether wl_client_get_credentials() can be applied to your use case instead of this function. If you would like to distinguish just between the client and the compositor itself from the client's request, it can be done by getting the client credentials and by checking the PID of the client and the compositor's PID. Regarding the case in which the socketpair() is being used, you need to be careful. Please note the documentation for wl_client_get_credentials(). This function can be used for a compositor to validate a request from a client if there are additional information provided from the client's file descriptor. For instance, suppose you can get the security contexts from the client's file descriptor. The compositor can validate the client's request with the contexts and make a decision whether it permits or deny it. struct wl_list * wl_client_get_link (struct wl_client * client) Get the link by which a client is inserted in the client list Parameters client The client object See also wl_client_for_each() wl_display_get_client_list() wl_client_from_link() struct wl_resource * wl_client_get_object (struct wl_client * client, uint32_t id) Look up an object in the client name space Parameters client The client object id The object id Returns The object or NULL if there is not object for the given ID This looks up an object in the client object name space by its object ID. void wl_client_post_implementation_error (struct wl_client * client, char const * msg, ...) Report an internal server error Parameters client The client object msg A printf-style format string ... Format string arguments Report an unspecified internal implementation error and disconnect the client. Field Documentation struct wl_connection* wl_client::connection struct wl_priv_signal wl_client::destroy_late_signal struct wl_priv_signal wl_client::destroy_signal struct wl_display* wl_client::display struct wl_resource* wl_client::display_resource int wl_client::error gid_t wl_client::gid struct wl_list wl_client::link struct wl_map wl_client::objects pid_t wl_client::pid struct wl_priv_signal wl_client::resource_created_signal struct wl_event_source* wl_client::source uid_t wl_client::uid Author Generated automatically by Doxygen for Wayland from the source code. Version 1.22.0 Thu Apr 6 2023 wl_client(3)