Wayland.ProxyA proxy corresponds to an object on the connection.
An ('a, 'v, 'role) t is a proxy used by 'role to send messages to an object with interface 'a and version in 'v.
val user_data : ('a, _, 'role) t -> ('a, 'role) S.user_datauser_data t returns the data attached to the proxy when it was created.
This just calls the application's user_data method, if any. Returns No_data if nothing was attached.
If the version rules turn out to be too restrictive, this can be used to disable them.
Using this incorrectly may lead to a protocol error (such as receiving an event for which no handler was registered).
val version : (_, _, _) t -> int32val metadata : ('a, _, 'role) t -> (module Metadata.S with type t = 'a)val ty : ('a, _, 'role) t -> 'a Metadata.tyval interface : (_, _, _) t -> stringval delete : (_, _, [< `Client | `Server ]) t -> unitdelete t removes t from the object table. For servers, it also sends a delete event from object 1 if the object was client-allocated.
val on_delete : (_, _, _) t -> (unit -> unit) -> uniton_delete t f calls f when t is deleted, either by delete being called (on the server) or when the client receives confirmation of the deletion from the server. f will also be called if the connection ends.
val can_send : (_, _, _) t -> boolcan_send t is true if the proxy can still be used in out-going messages. It becomes false after calling delete or shutdown_send.
val transport_up : (_, _, _) t -> booltransport_up t is true if t's connection is still active. This is false after we read or send end-of-file on the connection.
type ('a, 'v, 'role) proxy := ('a, 'v, 'role) tAlias for use inside this file only
module Handler : sig ... endHandlers for normal objects.
module Service_handler : sig ... endHandlers for services (objects added via the registry).
You should not need to use these functions directly. Instead, run wayland-scanner-ocaml to generate typed wrappers and use the wrappers instead.
val id : (_, _, _) t -> int32id t is t's object ID. Use this to refer to the object in a message.
val id_opt : (_, _, _) t option -> int32Like id but returns 0l for None.
val alloc :
('a, _, _) t ->
op:int ->
ints:int ->
strings:string option list ->
arrays:string list ->
('a, [ `W ]) Msg.talloc t ~op ~ints ~strings ~arrays is a fresh message for t's op operation. The message is the right size for ints integer arguments, all the strings in strings, and all the arrays in arrays.
send t msg enqueues msg on t's connection.
val spawn :
(_, 'v, [< `Client | `Server ] as 'role) t ->
['a, 'v, 'role] Handler.t ->
('a, 'v, 'role) tCreate a new proxy on t's connection with an unused ID. The new object has the same version as its parent.
val spawn_bind :
(_, _, [< `Client | `Server ] as 'role) t ->
(['a, 'v, 'role] Service_handler.t * int32) ->
('a, 'v, 'role) tLike spawn but the child's version is given explicitly, not inherited from the parent. This is used for binding with the global registry.
val shutdown_send : (_, _, _) t -> unitshutdown_send t indicates that you will no longer call send on t. Call this after sending a destructor message. Attempts to send using the proxy after this will fail.
val shutdown_recv : (_, _, _) t -> unitshutdown_recv t indicates that we will no longer receive messages addressed to t. Call this after receiving a destructor message.
module type TRACE = sig ... endPass a TRACE module when connecting to trace protocol messages.
val pp : (_, _, _) t Fmt.tval pp_transport : (_, _, _) t Fmt.tpp_transport calls S.transport#pp on the proxy's transport.