Fuchsia.update

添加时间:7

协议

AttemptsMonitor

fuchsia.update/update.fidl 中定义

在更新尝试开始时监控它们。

有意接收更新检查进度信息的客户 应实现此协议,并为客户端提供 Manager.MonitorAllUpdateChecks 的行为。 如果存在以下情况,经理将关闭 AttemptsMonitor 的客户端 超过 2 项待处理的请求。

OnStart

在新的更新尝试开始时调用。

参数:

  • |options|有关应如何执行此请求的选项。
  • |monitor|用于接收进度更新的协议。

请求

名称类型
options AttemptOptions
monitor server_end<Monitor>

响应

<空>

CommitStatusProvider

fuchsia.update/commit.fidl 中定义

报告当前启动的系统是否已提交。当 更新,则意味着:

  • 当前启动的槽位会被标记为“运行状况良好”(例如,已成功启动)。
  • 备用槽位(如果存在)标记为不可启动。
  • 重新启动时,系统不会回滚到以前版本的操作系统。
  • 旧版操作系统可能会被垃圾回收。

在提交更新之前,系统会保留早期版本的操作系统。 这样,如果我们发现新编写的版本质量不佳(例如,新编写的版本无法 则系统可以回退到先前提交的版本。

IsCurrentSystemCommitted

确定当前启动的系统是否已提交,并立即 返回一个 EventPair。

  • 如果提交当前启动的系统,则会显示 ZX_USER_SIGNAL_0 信号 在 EventPair 上断言,例如该信号会在 EventPair。
  • 如果提交处于待处理状态,则 EventPair 不会断言任何信号。当 系统提交时,则对 EventPair 断言 ZX_USER_SIGNAL_0
  • 如果系统未能提交当前启动的版本, 将重新启动并终止提供 CommitStatusProvider 的组件, 这将断言 ZX_EVENTPAIR_PEER_CLOSED。此时,剩余的任何 EventPair 将观察 ZX_EVENTPAIR_PEER_CLOSED 信号。
  • 响应 event 一个拥有权限 ZX_RIGHTS_BASIC 的 EventPair。

请求

<空>

响应

名称类型
event handle<eventpair>

监听器

fuchsia.update/update.fidl 中定义

供组件用来等待第一次软件更新检查完成。

添加时间:HEAD

WaitForFirstUpdateCheckToComplete

悬而未决的状况。它可以随时调用。它只会 如果软件更新检查工具已完成启动后检查,则返回 (无论是否出现错误),并且不会尝试重新启动。

请求

<空>

响应

<空>

管理员

fuchsia.update/update.fidl 中定义

如果客户端想要查看 更新,或关注当前更新的状态。

管理器提供了一种通过 Manager.CheckNow 消息。

CheckNow

立即检查更新,并视需要跟踪状态和 更新检查进度

  • 请求 options 有关应如何执行此请求的选项。 例如:是哪种实体发起了此请求? 例如:监控现有更新,检查 已在处理中, 替代方案?

  • 请求 monitor 接收状态事件的接口 进行这项更新检查此监控仅在 之后,它会 不会再收到任何通知, 已关闭。

  • error 如果无法开始更新检查,则会返回错误。 Monitor(如果提供)将不会收到任何通知。

请求

名称类型
options CheckOptions
monitor Monitor?

响应

名称类型
payload Manager_CheckNow_Result

MonitorAllUpdateChecks

监控开始的所有更新尝试以及正在进行的更新尝试 就会出现这种错误。

参数:

  • |attempts_monitor|接收 |Monitor| 时使用的协议个实例 。

请求

名称类型
attempts_monitor AttemptsMonitor

PerformPendingReboot

执行任何待处理的系统重新启动到更新后的操作系统(如果 已为下一次系统启动暂存更新。

应在平台配置为支持产品驱动时使用 重新启动时间安排。如果在平台未启动的情况下调用此方法, 配置为让该产品驱动重新启动时间安排,但不会重新启动 而且系统会在更新后自行重新启动。

在产品驱动的重新启动配置中,平台仍然包含一个 对更新后重新启动的回避。这意味着,如果更新 已安装,但系统未在逆转前重新启动 那么更新系统会自动重启 作为一项安全措施。为了避免这种情况 想要控制重新启动时间的产品应将其称为 方法。

  • 响应 rebooting 如果系统重新启动,则为 true,否则为 false 更新正等待重新启动。

请求

<空>

响应

名称类型
rebooting bool

监控

fuchsia.update/update.fidl 中定义

监控单个更新检查。

有意接收更新检查进度信息的客户 应实现此协议,并为客户端提供 Manager.CheckNow.

OnState

接收此更新检查的状态更新。

系统将针对所有状态更改调用此请求,不跳过任何请求。 然而,邮件递送受 实现会确认消息

受限的传送不会影响 Manager。它不会等待任何确认 进入下一个状态Manager 只会 将状态加入队列,以便 Monitor 实现接收。

在 install_update 状态中,Manager 可能会在其 收起冗余信息,例如已完成的比例、 如果 Monitor 实现没有响应,则会发生此错误 OnState() 请求。

  • 请求 state 更新检查的新状态。
  • 响应。实现已准备好接收下一个 State(来自 Manager)。

请求

名称类型
state State

响应

<空>

结构体

Manager_CheckNow_Response

fuchsia.update/update.fidl 中定义

<空>

精英

CheckNotStartedReason 严格

类型:uint32

fuchsia.update/update.fidl 中定义

这是一组值,由向 检查更新。

名称说明
1

启动更新检查时出现内部错误。客户 预计无法对此错误执行任何有意义的操作, 而是要稍后重试(在适当的延迟和 多个错误的事件。

2

如果有多个必需的参数或选项(或 冲突),通过 CheckOptions 表提供给 CheckNow, 返回的值。

3

当此请求被 。系统不会开始新的更新检查。

4

未启动更新检查,因为要检查的请求数量过多 是否进行了短时间内的更新。

注意:客户端不得尝试对后台更新进行检查, 发生频率要比 fuchsia.update.Manager 。

如果客户尝试滥用此属性,系统会对其加以限制。

启动器严格

类型:uint32

fuchsia.update/update.fidl 中定义

发起更新检查的人员或因素。

名称说明
1

更新检查由交互式用户启动,或用户 否则会被屏蔽,并等待此更新检查的结果。这个 应仅在有用户拥有的界面元素或流程时使用 发起了此更新检查。

2

更新检查由服务(而非面向用户的方面)发起 系统自身的功能

InstallationDeferralReason 柔性

类型:uint32

fuchsia.update/update.fidl 中定义

这是更新安装时提供的一组值 被延迟。

名称说明
1

未安装更新,因为当前启动的系统 投入。我们鼓励消费者使用 CommitStatusProvider 确定何时重试更新检查 需要安装。

表格

AttemptOptions

fuchsia.update/update.fidl 中定义

更新尝试监控详情。

Ordinal字段类型说明
initiator Initiator

发起此更新尝试的人员或原因。这可能会影响 更新检查。

CheckOptions

fuchsia.update/update.fidl 中定义

更新检查的配置选项。

Ordinal字段类型说明
initiator Initiator

发起此更新尝试的人员或原因。这被视为 政策,并且可能会影响更新检查的执行方式。

这是必填字段。

allow_attaching_to_existing_update_check bool

如果已在进行更新检查,可以改为 向正在进行的更新附加监视器,而不要失败 请求以检查更新。这可能会转换 导致 ALREADY_IN_PROGRESS 被视为非错误 案例

CheckingForUpdatesData

fuchsia.update/update.fidl 中定义

这是与 checking_for_updates 相关联的数据集。 (目前无)

Ordinal字段类型说明

ErrorCheckingForUpdateData

fuchsia.update/update.fidl 中定义

这是与error_checking_for_update相关联的数据集 状态。 (目前无)

Ordinal字段类型说明

InstallationDeferredData

fuchsia.update/update.fidl 中定义

这是一组与 installation_deferred_by_policy 状态。

Ordinal字段类型说明
update UpdateInfo
deferral_reason InstallationDeferralReason

InstallationErrorData

fuchsia.update/update.fidl 中定义

这是与 installation_error 状态相关联的数据集。 (目前无)

Ordinal字段类型说明
update UpdateInfo
installation_progress InstallationProgress

InstallationProgress

fuchsia.update/update.fidl 中定义

指示到目前为止安装更新的进度。

Ordinal字段类型说明
fraction_completed float32

已完成的安装所占的比例 [0-1.0f]。

InstallingData

fuchsia.update/update.fidl 中定义

这是一组与安装应用时所涉及的状态相关联的数据 更新:

  • installing_update
  • waiting_for_reboot

Ordinal字段类型说明
update UpdateInfo
installation_progress InstallationProgress

NoUpdateAvailableData

fuchsia.update/update.fidl 中定义

这是与 no_update_available 状态相关联的数据集。 (目前无)

Ordinal字段类型说明

UpdateInfo

fuchsia.update/update.fidl 中定义

此文件描述可供安装的更新。

Ordinal字段类型说明
version_available string[128]

描述可用版本的字符串。这可能是 语义版本 (A.B.C.D) 或不透明哈希值。客户端必须 请勿尝试检查此值,它仅用于显示目的。

download_size uint64

可下载以应用此更新的字节总数。

urgent bool

更新是否标记为紧急。默认值为 false。

联合体

Manager_CheckNow_Result 严格

fuchsia.update/update.fidl 中定义

Ordinal变体类型说明
response Manager_CheckNow_Response
err CheckNotStartedReason

州/省/自治区/直辖市严格

fuchsia.update/update.fidl 中定义

Monitor 在更新检查期间可以收到的状态集。

更新检查在进入终止状态时结束,该状态在下文中表示为 在图表右侧显示的没有指向其他状态的箭头, 。

状态机图

    +----------------------+     +---------------------------------+
    | checking_for_updates |---->|    error_checking_for_update    |
    +----------------------+     +---------------------------------+
               |
               |                 +---------------------------------+
               +---------------->|       no_update_available       |
               |                 +---------------------------------+
               |
               |                 +---------------------------------+
               +---------------->| installation_deferred_by_policy |
               |                 +---------------------------------+
               v
    +----------------------+     +---------------------------------+
    |  installing_update   |---->|       installation_error        |
    +----------------------+     +---------------------------------+
               |
               |                 +---------------------------------+
               +---------------->|       waiting_for_reboot        |
                                 +---------------------------------+
Ordinal变体类型说明
checking_for_updates CheckingForUpdatesData

管理员目前正在检查更新。

接下来的状态:

  • installing_update 项更新可用且政策允许
  • 出错了 error_checking_for_update
  • update_deferred_by_policy 项更新可用,但被政策延迟
error_checking_for_update ErrorCheckingForUpdateData

管理员在检查是否存在 进行新的更新。

此为终止状态

no_update_available NoUpdateAvailableData

目前没有可用更新。

此为终止状态

installation_deferred_by_policy InstallationDeferredData

管理员发现了一项可用更新,但并未在 因为政策限制

此为终止状态

installing_update InstallingData

管理器正在安装可用更新。

接下来的状态:

  • 成功时 waiting_for_reboot
  • 出错了 installation_error
waiting_for_reboot InstallingData

更新已安装,设备正在等待重新启动。

接下来的状态:

  • (无,设备重新启动)

此为终止状态

installation_error InstallationErrorData

管理器安装更新时遇到了更新。

此为终止状态

常量

名称类型说明
MAX_VERSION_STRING_SIZE 128 uint32

这是由 协议