上层协议
在 1.3 节有说,wayland.xml
基本上会随着 Wayland 包安装在你的系统里,找到并用文本编辑器打开这个文件。
就是通过此类文件,我们定义了 Wayland 客户端或服务端所支持的接口。
协议在线版查看:https://wayland.app/
Linux 下路径一般为:
/usr/share/wayland/wayland.xml
此文件使用 XML 格式,其中定义了每个接口,以及对应的请求、事件和各自的签名。
看看上一章中讨论的 wl_surface
示例:
<interface name="wl_surface" version="4">
<request name="damage">
<arg name="x" type="int" />
<arg name="y" type="int" />
<arg name="width" type="int" />
<arg name="height" type="int" />
</request>
<event name="enter">
<arg name="output" type="object" interface="wl_output" />
</event>
</interface>
片段为了简洁有删减,如果你有找到本机的 wayland.xml
文件,请亲自查看这个接口,它带有额外的文档,这些文档解释了每个请求事件的目的、准确语义。
在处理此 XML 文件时,我们按照它们出现的顺序给每个请求和事件分配一个操作码(都是从 0 开始编号,依次递增)。 结合参数列表,我们可以解码 Wire 协议传输来的请求和事件,并且根据 XML 文档,决定如何进行软件编程来做出相应的处理。 解析 XML 的工作通常不需要手写,而是由代码生成器自动生成,我们将在第 3 章讨论 libwayland 如何实现这一点。
从第 4 章开始,本书其余大部分内容专门用于解释该协议文件,以及一些补充扩展协议。