針對驅動程式庫傳輸使用新的 C++ 繫結

當通訊協定具有 @transport("Driver") 屬性時,通訊協定會以驅動程式傳輸而非作業時傳輸:

library fuchsia.example;

@transport("Driver")
protocol Protocol {
    TwoWay(struct {
        request uint32;
    }) -> (struct {
        response uint32;
    });
};

驅動程式傳輸是以 Fuchsia 驅動程式執行階段為基礎建構而成,這個核心有不同的記憶體管理限制,以及與 Zircon 管道不同的執行緒模型。因此,FIDL 用戶端和伺服器類型與 Zircon 管道中的通訊協定不同,以提供量身打造的 API。

fidl:: 命名空間下的用戶端/伺服器類型在 fdf:: 命名空間中都有對應的部分,可提供相同的功能,但專門用於驅動程式執行階段。例如,雖然有人會寫入 fidl::Client,以在 Zircon 通道傳輸中宣告非同步用戶端,而使用上方的範例通訊協定會寫入 fdf::Client<fuchsia_example::Protocol>。產生的 FIDL 標頭格式為 #include <fidl/fuchsia.example/cpp/driver/fidl.h>

同樣地,如果使用僅限傳輸型用戶端和伺服器 API,而其中一個 API 會寫入 fidl::WireClient 以在 Zircon 通道傳輸中宣告非同步用戶端,而使用上方的範例通訊協定將寫入 fdf::WireClient<fuchsia_example::Protocol>。一個可以包含位於 #include <fidl/fuchsia.example/cpp/driver/wire.h> 的接線器標頭。

驅動程式傳輸的 C++ 繫結仍在疊代。測試目前可用做繫結的範例