通訊協定具有 @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++ 繫結處於疊代狀態。目前,測試可能會 可做為使用繫結的範例。