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

通訊協定具有 @transport("Driver") 屬性時,通訊協定會運作 而不是透過 Zircon 管道傳輸方式。

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 限制線路類型時, 而會編寫 fidl::WireClient 來宣告非同步用戶端 而非透過 Zircon 管道傳輸資料 即可使用上述的範例通訊協定 寫入 fdf::WireClient<fuchsia_example::Protocol>。其中 1 條可能是電線 位於 #include <fidl/fuchsia.example/cpp/driver/wire.h> 的子集標頭。

驅動程式庫傳輸上的 C++ 繫結處於疊代狀態。目前,測試可能會 可做為使用繫結的範例