通过驱动程序传输使用新的 C++ 绑定

当协议具有 @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++ 绑定正在迭代中。目前,这些测试 作为使用绑定的示例