Wayland.Proxy
A 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_data
user_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 -> int32
val metadata : ('a, _, 'role) t -> (module Metadata.S with type t = 'a)
val ty : ('a, _, 'role) t -> 'a Metadata.ty
val interface : (_, _, _) t -> string
val delete : (_, _, [< `Client | `Server ]) t -> unit
delete 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) -> unit
on_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 -> bool
can_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 -> bool
transport_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) t
Alias for use inside this file only
module Handler : sig ... end
Handlers for normal objects.
module Service_handler : sig ... end
Handlers 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 -> int32
id t
is t
's object ID. Use this to refer to the object in a message.
val id_opt : (_, _, _) t option -> int32
Like id
but returns 0l for None
.
val alloc :
('a, _, _) t ->
op:int ->
ints:int ->
strings:string option list ->
arrays:string list ->
('a, [ `W ]) Msg.t
alloc 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) t
Create 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) t
Like 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 -> unit
shutdown_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 -> unit
shutdown_recv t
indicates that we will no longer receive messages addressed to t
. Call this after receiving a destructor message.
module type TRACE = sig ... end
Pass a TRACE
module when connecting to trace protocol messages.
val pp : (_, _, _) t Fmt.t
val pp_transport : (_, _, _) t Fmt.t
pp_transport
calls S.transport#pp
on the proxy's transport.