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 资源

在 fuchsia.component.resolution/resolver.fidl 中定义

字段类型说明默认
component Component 无默认应用

Resolver_Resolve_Response 资源

在 fuchsia.component.resolution/resolver.fidl 中定义

字段类型说明默认
component Component 无默认应用

枚举

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”。

如果组件未表示为软件包,则此值为 null。 在这种情况下,运行程序负责从 url 加载组件的资源。此机制用于 Web 应用。

大多数运行程序(包括但不限于内置 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 中定义

序数变体类型说明
response Resolver_ResolveWithContext_Response
err ResolverError

Resolver_Resolve_Result strict resource

在 fuchsia.component.resolution/resolver.fidl 中定义

序数变体类型说明
response Resolver_Resolve_Response
err ResolverError

常量

名称值类型说明
MAX_COMPONENT_URL_LENGTH 2083 uint32

组件网址的最大长度。

MAX_RESOLUTION_CONTEXT_SIZE 8192 uint32

Context 的最大字节数。