元件執行器

元件管理員使用 fuchsia.component.runner.ComponentRunner 通訊協定,將含有 ComponentStartInfo 的要求傳送至適當的執行元件,藉此啟動元件。 ComponentStartInfo執行器會在支援的執行階段中管理元件執行作業。

啟動元件後,元件管理員會使用 Start 要求中提供的 fuchsia.component.runner.ComponentController 通訊協定,將執行動作傳送至執行元件,例如停止元件。執行器會根據元件執行階段,選擇如何適當解讀這些指令。

提供執行元件功能

runnerpathfuchsia.component.runner.ComponentRunner

{
    capabilities: [
        {
            runner: "web",
            path: "/svc/fuchsia.component.runner.ComponentRunner",
        },
    ],
}

元件管理員會將 ComponentRunner/Start 要求傳送至這個通訊協定。每項要求都包含 ComponentController 管道,執行元件應透過該管道處理元件的生命週期事件。

轉送執行元件功能

元件會將執行器功能「公開」exposing給父項,並提供給子項,藉此轉送執行器功能。

如要進一步瞭解架構路徑元件功能,請參閱「功能轉送」。

公開

公開執行元件能力可讓元件的父項存取該能力:

{
    expose: [
        {
            runner: "web",
            from: "self",
        },
    ],
}

您可以視需要指定:

提供

提供執行元件能力,可讓子項元件存取該能力:

{
    offer: [
        {
            runner: "web",
            from: "self",
            to: [ "#child-a" ],
        },
    ],
}

您可以視需要指定:

註冊元件執行元件

元件執行器可透過其環境提供給元件。如要在環境中註冊新的執行元件,請在 environments 宣告的 runners 區段中新增項目:

environments: [
    {
        name: "my-environ",
        extends: "realm",
        runners: [
            {
                runner: "web",
                from: "parent",
            },
        ],
    },
]

您可以視需要指定:

如要進一步瞭解如何將環境套用至元件,請參閱環境說明文件

選取執行元件

元件會使用其資訊清單的 program 區段,指定適合執行的執行元件。program 區段會指定 runner 以及任何執行元件專用的選項。執行器必須在元件環境中註冊

舉例來說,做為網頁執行的元件可能會有如下所示的 program

program: {
    runner: "web",
    mode: "incognito",
},

當元件管理員嘗試啟動這個元件時,會向 web 執行元件的提供者傳送要求以啟動該元件。

正在重新命名執行者

您可以使用 as 參數,以不同名稱exposeoffer執行元件能力:

{
    expose: [
        {
            runner: "web",
            from: "#chromium",
            as: "web-chromium",
        },
    ],
}

架構執行器

元件架構提供下列內建元件執行器:

{
    program: {
        runner: "elf",
        binary: "bin/example",
    },
}