当协议具有 @transport("Driver")
属性时,该协议将运行
而不是通过 zircon 通道传输:
library fuchsia.example;
@transport("Driver")
protocol Protocol {
TwoWay(struct {
request uint32;
}) -> (struct {
response uint32;
});
};
驱动程序传输基于 Fuchsia 驱动程序运行时,该运行时具有 内存管理限制和线程模型 和 Zircon 通道。因此,FIDL 客户端和服务器类型是不同的 ,以提供量身定制的 API。
fidl::
命名空间下的大多数客户端/服务器类型在
fdf::
命名空间,该命名空间提供相同的功能,但专用于
驱动程序运行时。例如,您可以编写 fidl::Client
来声明
Zircon 通道传输上的异步客户端,使用示例
上面的协议将写入 fdf::Client<fuchsia_example::Protocol>
。通过
生成的 FIDL 标头的格式为
#include <fidl/fuchsia.example/cpp/driver/fidl.h>
。
同样,在使用仅限传输类型的客户端和服务器 API 时,
而编写 fidl::WireClient
来声明异步客户端
通过 Zircon 信道传输,要使用上述示例协议,
写入 fdf::WireClient<fuchsia_example::Protocol>
。其中一个可能包括导线
子集标题位于 #include <fidl/fuchsia.example/cpp/driver/wire.h>
。
驱动程序传输的 C++ 绑定正在迭代中。目前,这些测试 作为使用绑定的示例。