fuchsia.component.resolution

新增:7

通訊協定

解析器

定義於 fuchsia.component.resolution/resolver.fidl

用於將網址解析為元件的介面。

這個介面是由元件實作,可支援載入具有特定網址配置的元件。舉例來說,Fuchsia 套件元件解析器會公開具有此介面的服務,以使用「fuchsia-pkg://」配置解析元件網址。

如要使用解析器解析領域內的網址,請在領域的資訊清單中註冊解析器。

注意:元件管理服務是這個介面唯一預期的直接用戶端。

解決

使用指定的絕對網址解析元件。

component_url 是要解析的元件未逸出網址。

如果成功,則會傳回已解析元件的相關資訊。

如果失敗,則會傳回 ResolverError 錯誤。

要求

名稱類型
component_url string:2083

回應

名稱類型
payload Resolver_Resolve_Result

ResolveWithContext

使用絕對或相對網址解析元件。如果是相對路徑,則會相對於提供的 context 解析。

component_url 是要解析的元件未逸出網址,格式可以是:

  • 完整的絕對元件網址;或
  • 子套件元件參照,前置字串為其所含子套件的 URI 相對路徑 (例如 child_package#meta/some_component.cm)

context 是先前解析的 Component 的 resolution_context,提供解析相對網址的背景資訊。

要求

名稱類型
component_url string:2083
context Context

回應

名稱類型
payload Resolver_ResolveWithContext_Result

STRUCTS

背景資訊

定義於 fuchsia.component.resolution/component.fidl

元件解析內容,用於解析相對於其他元件的元件網址。內容會儲存在位元組陣列中,該陣列會保留目標 Resolver 使用的值,以便透過相對路徑 (例如子套件名稱) 找出並解析元件。

欄位類型說明預設
bytes vector<uint8>:8192 無預設值

Resolver_ResolveWithContext_Response resource

定義於 fuchsia.component.resolution/resolver.fidl

欄位類型說明預設
component Component 無預設值

Resolver_Resolve_Response 資源

定義於 fuchsia.component.resolution/resolver.fidl

欄位類型說明預設
component Component 無預設值

ENUMS

ResolverError strict

類型:uint32

定義於 fuchsia.component.resolution/resolver.fidl

ComponentResolver 可能傳回的錯誤條件。

名稱值說明
1

發生未預期的錯誤。

2

發生一般 IO 錯誤。

3

元件網址格式錯誤。

4

不支援網址中指定的存放區。

5

找不到元件資訊清單。

6

找不到元件的套件。

7

裝置空間不足,無法儲存元件套件。

8

暫時無法使用這個元件。

9

無法剖析元件資訊清單,或資訊清單含有無效設定。

10

元件指定了設定欄位,但找不到值。

11

找不到 ABI 修訂版本檔案。

新增:12
12

無法剖析 ABI 修訂版本值。

新增:12

TABLES

元件資源

定義於 fuchsia.component.resolution/component.fidl

元件是可執行的軟體單位。

這個物件會提供元件的宣告、套件內容的存取權,以及解析為 fuchsia.component.resolution.Resolver 的相關中繼資料。

序數欄位類型說明
decl fuchsia.mem/Data

元件宣告的二進位表示法 (fuchsia.component.decl.Component)。這項資訊通常是從元件的資訊清單取得,或由元件解析器產生。

package Package

含有元件的套件。按照慣例,元件的套件會在執行階段對應至其命名空間中的「/pkg」。

如果元件未以套件形式呈現,則此值為空值。在這種情況下,執行元件必須負責從 url 載入元件的資源。這個機制適用於網頁應用程式。

大多數執行工具 (包括但不限於內建 ELF 執行元件) 都需要套件的目錄連線具備 OPEN_RIGHT_EXECUTABLE 權限,才能執行解析的元件。

config_values fuchsia.mem/Data

元件設定值的二進位表示法 (fuchsia.component.config.ValuesData)。

resolution_context Context

用於解析與此元件相關的 component_url 的內容。解析「可能」與這個 Component 相關的元件網址時,請將這個值傳遞至 Resolver::ResolveWithContext()。

resolution_context 是由元件 Resolver 提供的不透明值 (從元件解析度的角度來看),用於與父項 Component 一起儲存。

可透過 ResolveWithContext 解析相對路徑元件網址的 Resolver,應從 Resolve 和 ResolveWithContext 傳回 resolution_context。相對路徑元件網址只能透過 ResolveWithContext 解析,這需要有效的解析 Context。

abi_revision fuchsia.version/AbiRevision

已解析元件的目標 ABI 修訂版本。

新增:10

套件資源

定義於 fuchsia.component.resolution/package.fidl

套件是一組已簽署且不可變更的檔案。

這個物件可讓您存取套件內容和相關中繼資料。

序數欄位類型說明
url string:2083

套件本身的網址。

directory client_end:fuchsia.io/Directory

套件的內容目錄。

UNIONS

Resolver_ResolveWithContext_Result strict resource

定義於 fuchsia.component.resolution/resolver.fidl

序數Variant類型說明
response Resolver_ResolveWithContext_Response
err ResolverError

Resolver_Resolve_Result strict resource

定義於 fuchsia.component.resolution/resolver.fidl

序數Variant類型說明
response Resolver_Resolve_Response
err ResolverError

常數

名稱值類型說明
MAX_COMPONENT_URL_LENGTH 2083 uint32

元件網址長度上限。

MAX_RESOLUTION_CONTEXT_SIZE 8192 uint32

Context 的位元組數上限。