fidl intro

Fuchsia 接口定义语言(FIDL)是用来描述 Fuchsia 程序使用的进程间通信(IPC)协议的语言。FIDL 为供应商提供了一种简化的声明语法,以便将接口定义为一种协议。支持的数据类型包括整数、浮点数、布尔运算、字符串和[句柄][glossary.handle]。这些可以被组织成更复杂的数组、向量、结构体、表格和联合体。

考虑以下用于 Echo 接口的 FIDL 协议的示例。

library fuchsia.examples;

{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="examples/fidl/fuchsia.examples/echo.test.fidl" region_tag="max" adjust_indentation="auto" %}

{% includecode gerrit_repo="fuchsia/fuchsia" gerrit_path="examples/fidl/fuchsia.examples/echo.test.fidl" region_tag="echo" adjust_indentation="auto" %}

FIDL 协议描述了一组方法,在通过通道发送消息时被调用。通道消息本身是异步的,发送方和接收方彼此可以独立操作。FIDL 方法引入了更高层次的语义,使 FIDL 交易的客户端和服务器端的编程更加符合传统习惯。

FIDL 支持以下方法类型:

  • 双向方法:一个典型的方法调用是,接受可选的参数,其返回类型定义在 -> 操作符之后。双向方法会阻塞调用方直到收到响应。在 Echo 的例子中,EchoString() 方法是一个双向的方法。
  • 单向方法:异步方法调用,立即返回而不等待响应。没有声明返回类型的方法被认为是客户端的单向方法。在 Echo 的例子中,SendString() 方法是一个单向的方法。
  • 事件:必要时,服务器端可以向客户端发送非请求信息,这种消息称为事件。事件在 -> 操作符的返回端声明其方法名称。在 Echo 的例子中,OnString() 方法是一个事件。

注意:要获取 FIDL 语言语法和支持的类型的更多细节,请参阅 FIDL 语言规范

glossary.handle


最后更新: 2022 年 12 月 31 日(Saturday) 21:07 CST