通訊協定
AttemptsMonitor
在 fuchsia.update/update.fidl 中定義的
在開始時監控更新嘗試。
想接收更新檢查進度資訊的客戶 應實作這項通訊協定,並提供用戶端 Manager.MonitorAllUpdateChecks。 如果出現 超過 2 個待處理的要求
OnStart
嘗試新的更新嘗試時呼叫。
引數:
- |options|要求執行此要求的方式。
- |monitor|用於接收進度更新的通訊協定。
要求
名稱 | 類型 |
---|---|
options |
AttemptOptions
|
monitor |
server_end<Monitor>
|
回應
<空白>
CommitStatusProvider
定義於 fuchsia.update/commit.fidl
回報目前啟動系統是否修訂的回報者。如果 更新檔案,因此:
- 系統會將目前啟動的運算單元標示為健康狀態良好 (例如成功啟動)。
- 替代運算單元 (如有) 會標示為無法啟動。
- 重新啟動時,系統不會復原至舊版作業系統。
- 舊版 OS 可能會進行垃圾收集。
在提交更新之前,系統會保留先前的 OS 版本。 這樣一來,如果我們發現新寫入的版本就會出錯 (例如本身不能 更新後,系統便可改回先前的修訂版本。
IsCurrentSystemCommitted
決定是否修訂目前啟動的系統,並立即執行 會傳回 EventPair。
- 如果已修訂目前啟動的系統,則
ZX_USER_SIGNAL_0
信號。 被聲明為事件配對,例如並在 傳回 EventPair。 - 假如修訂內容為待處理狀態,系統就不會在事件配對中宣告任何信號。當
系統修訂,
ZX_USER_SIGNAL_0
應在事件配對中宣告。 - 如果系統無法提交目前啟動版本,系統會提交
將會重新啟動並終止提供 CommitStatusProvider 的元件。
這將斷言
ZX_EVENTPAIR_PEER_CLOSED
目前 事件配對會觀察ZX_EVENTPAIR_PEER_CLOSED
信號。
- 回應
event
包含權利ZX_RIGHTS_BASIC
的 EventPair。
要求
<空白>
回應
名稱 | 類型 |
---|---|
event |
handle<eventpair>
|
監聽器
在 fuchsia.update/update.fidl 中定義的
由元件用於等待第一次軟體更新檢查完成。
WaitForFirstUpdateCheckToComplete
太過緊了吧。隨時都可以呼叫呼叫。只有 如果軟體更新檢查工具已完成啟動後檢查,則會傳回 且未嘗試重新啟動。
要求
<空白>
回應
<空白>
管理員
在 fuchsia.update/update.fidl 中定義的
用戶端可利用 Manager 通訊協定,檢查 更新或追蹤處理中的更新狀態。
Manager 提供一種透過 Manager.CheckNow 訊息。
CheckNow
立即檢查更新,並視需要追蹤狀態並 更新檢查的進度
-
要求
options
如何執行此要求的選項。 例如:提出要求的實體屬於哪種實體? 例如:監控現有的更新檢查 已在處理 替代? -
要求
monitor
用於接收狀態事件的介面 進行這項更新檢查監控器無效 執行這項單一更新檢查後 停止接收任何通知, 已打烊。
- 錯誤。如果無法啟動更新檢查,系統會傳回錯誤。 監控 (如有提供) 將不會接收任何通知。
要求
名稱 | 類型 |
---|---|
options |
CheckOptions
|
monitor |
Monitor?
|
回應
名稱 | 類型 |
---|---|
payload |
Manager_CheckNow_Result
|
MonitorAllUpdateChecks
一邊啟動更新嘗試和進行中的更新作業 就會嘗試執行回應程序。
引數:
- |attempts_monitor|接收 |監控| 的通訊協定執行個體 持續更新嘗試。
要求
名稱 | 類型 |
---|---|
attempts_monitor |
AttemptsMonitor
|
PerformPendingReboot
執行任何待處理的系統重新啟動至更新的 OS, 已針對下次系統啟動時安排更新。
需在平台設為允許產品雲端硬碟時使用 重啟排程。如果系統未呼叫平台時呼叫這個方法 設定為讓產品重新啟動排程,但不會重新啟動 而系統會在更新後自行重新啟動。
在產品導向的重新啟動設定中,平台仍含有 更新後重新啟動。也就是說 已安裝,但系統未在回溯停止前重新啟動 更新作業期間,更新系統會自動重新啟動 是安全措施為了避免再次發生 需要控制重新啟動時間的產品,應將此名稱命名為 方法。
- 如果系統正在重新啟動,則回應
rebooting
是,false 表示否 更新正在等待重新啟動。
要求
<空白>
回應
名稱 | 類型 |
---|---|
rebooting |
bool
|
監視器
在 fuchsia.update/update.fidl 中定義的
監控單一更新檢查。
想接收更新檢查進度資訊的客戶 應實作這項通訊協定,並提供用戶端 Manager.CheckNow.
OnState
接收這項更新檢查的狀態更新。
針對所有狀態變更,系統會呼叫這項要求,略過無任何狀態。 不過,訊息傳送速度會受 實作會確認訊息。
調節放送不會影響 管理員:不會在移動前等待任何確認 保持在狀態機器的下個狀態管理員只會 佇列會將 Monitor 實作項目的狀態排入接收的佇列。
在 install_update 狀態中,管理員可能會以
視需要收合多餘資訊,例如完成的分數
當 Monitor 實作沒有回應
及時處理 OnState()
要求。
- 要求
state
更新檢查的新狀態。
要求
名稱 | 類型 |
---|---|
state |
State
|
回應
<空白>
結構
Manager_CheckNow_Response
在 fuchsia.update/update.fidl 中定義的
<空白>
ENUMS
CheckNotStartedReason 嚴格
類型:uint32
在 fuchsia.update/update.fidl 中定義的
這是一組值,會由要求立即傳回 檢查是否有更新。
名稱 | 值 | 說明 |
---|---|---|
僅限內部 |
1 |
啟動更新檢查時發生內部錯誤。用戶端 無法對此錯誤採取有意義的行動 但可稍後再試 (發生適當的延遲,並在 多次錯誤的事件 |
INVALID_OPTIONS |
2 |
如果有必要的引數或選項 (或 發生衝突),透過 CheckOptions 表格提供給 CheckNow,這是這個錯誤 。 |
ALREADY_IN_PROGRESS |
3 |
在這項要求聲明之前,已有其他正在進行的更新檢查作業 執行。系統不會開始新的更新檢查。 |
保留時間 |
4 |
太多要求檢查要求,因此無法開始更新檢查 更新作業是由用戶端在短時間內完成。 注意:用戶端「不得」試圖觸發背景更新檢查 發生頻率比 fuchsia.update.Manager 更常發生 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件 一旦客戶嘗試濫用,就會受到節流限制。 |
發起人嚴格
類型:uint32
在 fuchsia.update/update.fidl 中定義的
啟動更新檢查的人員或原因。
名稱 | 值 | 說明 |
---|---|---|
使用者 |
1 |
更新檢查是由互動式使用者啟動,或使用者 否則就會遭到封鎖並等待這項更新檢查的結果這個 只在使用者有 UI 元素或流程出現時,才應使用 即可啟動這項更新檢查。 |
服務 |
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 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Manager_CheckNow_Response
|
|
2 |
err |
CheckNotStartedReason
|
州/省嚴格
在 fuchsia.update/update.fidl 中定義的
監控在更新檢查期間可接收的狀態組合。
更新檢查會在進入終端機狀態時結束,如下圖所示 圖表右側的狀態,沒有箭頭從 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件
狀態機器圖
+----------------------+ +---------------------------------+
| checking_for_updates |---->| error_checking_for_update |
+----------------------+ +---------------------------------+
|
| +---------------------------------+
+---------------->| no_update_available |
| +---------------------------------+
|
| +---------------------------------+
+---------------->| installation_deferred_by_policy |
| +---------------------------------+
v
+----------------------+ +---------------------------------+
| installing_update |---->| installation_error |
+----------------------+ +---------------------------------+
|
| +---------------------------------+
+---------------->| waiting_for_reboot |
+---------------------------------+
Ordinal | Variant | 類型 | 說明 |
---|---|---|---|
1 |
checking_for_updates |
CheckingForUpdatesData
|
管理員目前正在檢查更新。 下一次各州:
|
2 |
error_checking_for_update |
ErrorCheckingForUpdateData
|
管理員檢查 文章。 這是個終端狀態 |
3 |
no_update_available |
NoUpdateAvailableData
|
目前無法更新。 這是個終端狀態 |
4 |
installation_deferred_by_policy |
InstallationDeferredData
|
管理員已找到可用的更新,但 Google 並未採取行動 本次異動是受到政策限制影響 這是個終端狀態 |
5 |
installing_update |
InstallingData
|
管理員正在安裝可用的更新, 下一次各州:
|
6 |
waiting_for_reboot |
InstallingData
|
更新安裝完成,裝置正在等待重新啟動。 下一次各州:
這是個終端狀態 |
7 |
installation_error |
InstallationErrorData
|
「管理員」在安裝更新時遇到更新。 這是個終端狀態 |
觀測站
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MAX_VERSION_STRING_SIZE |
128
|
uint32 |
這是版本字串,將由 通訊協定 |