通訊協定功能

A 罩杯 通訊協定功能 是支援能力 依 頻道 說一個特定語句 FIDL 通訊協定 ,直接在 Google Cloud 控制台實際操作。

library fuchsia.examples;

const MAX_STRING_LENGTH uint64 = 32;

@discoverable
protocol Echo {
    EchoString(struct {
        value string:MAX_STRING_LENGTH;
    }) -> (struct {
        response string:MAX_STRING_LENGTH;
    });
    SendString(struct {
        value string:MAX_STRING_LENGTH;
    });
    -> OnString(struct {
        response string:MAX_STRING_LENGTH;
    });
};

通訊協定實作是由使用 傳出目錄 而從其他應用程式 元件的 命名空間 ,直接在 Google Cloud 控制台實際操作。

提供通訊協定功能

如要提供通訊協定能力,元件必須宣告 從self。元件中有一個 其 傳出目錄 ,直接在 Google Cloud 控制台實際操作。

若要定義能力,請為該功能新增 capabilities 宣告:

{
    capabilities: [
        {
            protocol: "fuchsia.example.ExampleProtocol",
        },
    ],
}

這定義了由元件代管的能力,該元件具有傳出目錄路徑 為 /svc/fuchsia.example.ExampleProtocol。您也可以自訂路徑:

{
    capabilities: [
        {
            protocol: "fuchsia.example.ExampleProtocol",
            path: "/my_svc/fuchsia.example.MyExampleProtocol",
        },
    ],
}

轉送通訊協定功能

元件會「公開」元件,藉此轉送通訊協定功能 家長為他們提供福利

如要進一步瞭解架構如何轉送元件功能, 請參閱功能轉送

公開

公開通訊協定能力可讓元件的父項存取該元件 功能:

{
    expose: [
        {
            protocol: "fuchsia.example.ExampleProtocol",
            from: "self",
        },
    ],
}

from: "self" 指令代表通訊協定功能 由此元件「提供」的函式

提供

提供通訊協定能力可讓子項元件存取 功能:

{
    offer: [
        {
            protocol: "fuchsia.example.ExampleProtocol",
            from: "self",
            to: [ "#child-a", "#child_b" ],
        },
    ],
}

取用通訊協定功能

如要使用通訊協定能力,元件必須要求 開啟對應的路徑 命名空間 ,直接在 Google Cloud 控制台實際操作。

如要要求這項能力,請為該功能新增 use 宣告:

{
    use: [
        {
            protocol: "fuchsia.example.ExampleProtocol",
        },
    ],
}

這會在已知路徑的元件命名空間中填入通訊協定 /svc/fuchsia.example.ExampleProtocol。您也可以自訂路徑:

{
    use: [
        {
            protocol: "fuchsia.example.ExampleProtocol",
            path: "/my_svc/fuchsia.example.MyExampleProtocol",
        },
    ],
}

如要進一步瞭解未解決要求,請參閱 通訊協定開啟的生命週期

使用選用的通訊協定功能

請參閱連結元件:使用選用功能

架構通訊協定

「架構通訊協定」是由元件架構提供的通訊協定。 任何元件都能將 framework 設為來源,use 這些功能 但父項的 offer 不含該元素 Fuchsia 支援下列架構通訊協定:

{
    use: [
        {
            protocol: "fuchsia.component.Realm",
            from: "framework",
        },
    ],
}