协议
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 中定义
供组件用来等待第一次软件更新检查完成。
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 |
State
|
响应
<空>
结构体
Manager_CheckNow_Response
在 fuchsia.update/update.fidl 中定义
<空>
精英
CheckNotStartedReason 严格
类型:uint32
在 fuchsia.update/update.fidl 中定义
这是一组值,由向 检查更新。
名称 | 值 | 说明 |
---|---|---|
内部 |
1 |
启动更新检查时出现内部错误。客户 预计无法对此错误执行任何有意义的操作, 而是要稍后重试(在适当的延迟和 多个错误的事件。 |
INVALID_OPTIONS |
2 |
如果有多个必需的参数或选项(或 冲突),通过 CheckOptions 表提供给 CheckNow, 返回的值。 |
ALREADY_IN_PROGRESS |
3 |
当此请求被 。系统不会开始新的更新检查。 |
受限 |
4 |
未启动更新检查,因为要检查的请求数量过多 是否进行了短时间内的更新。 注意:客户端不得尝试对后台更新进行检查, 发生频率要比 fuchsia.update.Manager 。 如果客户尝试滥用此属性,系统会对其加以限制。 |
启动器严格
类型:uint32
在 fuchsia.update/update.fidl 中定义
发起更新检查的人员或因素。
名称 | 值 | 说明 |
---|---|---|
USER |
1 |
更新检查由交互式用户启动,或用户 否则会被屏蔽,并等待此更新检查的结果。这个 应仅在有用户拥有的界面元素或流程时使用 发起了此更新检查。 |
服务 |
2 |
更新检查由服务(而非面向用户的方面)发起 系统自身的功能 |
InstallationDeferralReason 柔性
类型:uint32
在 fuchsia.update/update.fidl 中定义
这是更新安装时提供的一组值 被延迟。
名称 | 值 | 说明 |
---|---|---|
CURRENT_SYSTEM_NOT_COMMITTED |
1 |
未安装更新,因为当前启动的系统 投入。我们鼓励消费者使用 CommitStatusProvider 确定何时重试更新检查 需要安装。 |
表格
AttemptOptions
在 fuchsia.update/update.fidl 中定义
更新尝试监控详情。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
initiator |
Initiator
|
发起此更新尝试的人员或原因。这可能会影响 更新检查。 |
CheckOptions
在 fuchsia.update/update.fidl 中定义
更新检查的配置选项。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
initiator |
Initiator
|
发起此更新尝试的人员或原因。这被视为 政策,并且可能会影响更新检查的执行方式。 这是必填字段。 |
2 |
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 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
update |
UpdateInfo
|
|
2 |
deferral_reason |
InstallationDeferralReason
|
InstallationErrorData
在 fuchsia.update/update.fidl 中定义
这是与 installation_error
状态相关联的数据集。
(目前无)
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
update |
UpdateInfo
|
|
2 |
installation_progress |
InstallationProgress
|
InstallationProgress
在 fuchsia.update/update.fidl 中定义
指示到目前为止安装更新的进度。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
fraction_completed |
float32
|
已完成的安装所占的比例 [0-1.0f]。 |
InstallingData
在 fuchsia.update/update.fidl 中定义
这是一组与安装应用时所涉及的状态相关联的数据 更新:
installing_update
waiting_for_reboot
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
update |
UpdateInfo
|
|
2 |
installation_progress |
InstallationProgress
|
NoUpdateAvailableData
在 fuchsia.update/update.fidl 中定义
这是与 no_update_available
状态相关联的数据集。
(目前无)
Ordinal | 字段 | 类型 | 说明 |
---|
UpdateInfo
在 fuchsia.update/update.fidl 中定义
此文件描述可供安装的更新。
Ordinal | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
version_available |
string[128]
|
描述可用版本的字符串。这可能是 语义版本 (A.B.C.D) 或不透明哈希值。客户端必须 请勿尝试检查此值,它仅用于显示目的。 |
2 |
download_size |
uint64
|
可下载以应用此更新的字节总数。 |
3 |
urgent |
bool
|
更新是否标记为紧急。默认值为 false。 |
联合体
Manager_CheckNow_Result 严格
在 fuchsia.update/update.fidl 中定义
Ordinal | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Manager_CheckNow_Response
|
|
2 |
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 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
checking_for_updates |
CheckingForUpdatesData
|
管理员目前正在检查更新。 接下来的状态:
|
2 |
error_checking_for_update |
ErrorCheckingForUpdateData
|
管理员在检查是否存在 进行新的更新。 此为终止状态 |
3 |
no_update_available |
NoUpdateAvailableData
|
目前没有可用更新。 此为终止状态 |
4 |
installation_deferred_by_policy |
InstallationDeferredData
|
管理员发现了一项可用更新,但并未在 因为政策限制 此为终止状态 |
5 |
installing_update |
InstallingData
|
管理器正在安装可用更新。 接下来的状态:
|
6 |
waiting_for_reboot |
InstallingData
|
更新已安装,设备正在等待重新启动。 接下来的状态:
此为终止状态 |
7 |
installation_error |
InstallationErrorData
|
管理器安装更新时遇到了更新。 此为终止状态 |
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
MAX_VERSION_STRING_SIZE |
128
|
uint32 |
这是由 协议 |