通訊協定
企圖監控
定義於 fuchsia.update/update.ithl
監控更新嘗試的時間。
想接收更新檢查進度資訊的客戶應實作這個通訊協定,並將用戶端提供給 Manager.MonitorAllUpdateChecks。如果超過 2 個待處理的要求,管理員會關閉 trysMonitor 的用戶端結束。
起始
在新的更新嘗試啟動時呼叫。
引數:
- |options| 執行這項要求的方式。
- |monitor| 接收更新進度的通訊協定。
要求
名稱 | 類型 |
---|---|
options |
AttemptOptions
|
monitor |
server_end<Monitor>
|
回應
<EMPTY>
修訂版本狀態提供者
定義於 fuchsia.update/commit.fidl
回報者,說明目前啟動的系統是否修訂。修訂更新後,這表示:
- 目前啟動的運算單元會標示為健康狀態良好 (例如成功啟動)。
- 替代版位 (如果有的話) 會標示為不可啟動。
- 重新啟動後,系統不會復原為舊版作業系統。
- 舊版 OS 可能會遭到垃圾收集。
提交更新之前,系統會保留先前的 OS 版本。如此一來,如果我們發現新寫入的應用程式版本不佳 (例如無法自行更新),系統可以改回使用先前的修訂版本。
目前的系統問題
判斷目前啟動的系統是否已確認,並立即傳回 EventPair。
- 如果目前啟動的系統已確認,則 EventEvent 會宣告
ZX_USER_SIGNAL_0
信號,例如在事件配對之前,斷言。 - 如果修訂版本處於待處理狀態,EventPair 就不會宣告任何信號。當系統提交時,
ZX_USER_SIGNAL_0
會在 EventPair 上宣告。 - 如果系統未能修訂目前啟動的版本,系統會重新啟動並終止供應 CommitStatusProvider 的元件,藉此宣告
ZX_EVENTPAIR_PEER_CLOSED
。此時,剩下的 EventPair 都會觀察ZX_EVENTPAIR_PEER_CLOSED
信號。
- 回覆「
event
」和「ZX_RIGHTS_BASIC
」權限相符的 EventPair。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
event |
handle<eventpair>
|
經理
定義於 fuchsia.update/update.ithl
用戶端會使用 API 通訊協定檢查更新,或是追蹤進行中的更新狀態。
Manager 提供的機制可讓您透過 Manager.CheckNow 訊息檢查更新。
立即檢查
立即檢查更新,並視需要追蹤該更新檢查的狀態和進度。
-
要求
options
以執行此要求。例如:提出這項要求的實體類型為何? 例如,監控為執行中的現有更新檢查是否在可接受的額外環境中? -
要求
monitor
介面,用於接收這項更新檢查的狀態事件。監控功能僅適用於這項單一更新檢查,之後將不再接收任何通知也不會關閉。
- error 無法啟動更新檢查。系統會傳回錯誤。 監視器 (如有提供) 不會收到任何通知。
要求
名稱 | 類型 |
---|---|
options |
CheckOptions
|
monitor |
Monitor?
|
回應
名稱 | 類型 |
---|---|
payload |
Manager_CheckNow_Result
|
監控所有更新檢查
監控所有開始時間的更新,以及進行中的嘗試 (如果有的話)。
引數:
- |attempts_monitor| 在更新嘗試時接收的 |Monitor| 執行個體接收通訊協定。
要求
名稱 | 類型 |
---|---|
attempts_monitor |
AttemptsMonitor
|
執行待處理重新啟動
如果系統是針對下次系統啟動的更新作業,請執行任何待處理的重新啟動作業。
只有在將平台設定為允許產品重新啟動排程時,應使用此選項。如果在平台未設為允許產品重新啟動排程時呼叫這個方法,則不會重新啟動,而且系統會在更新後自動重新啟動。
在產品導向的重新啟動設定中,平台仍會包含更新後重新啟動的停止機制。這表示如果已安裝更新,但在重新啟動作業持續時間之前未重新啟動,更新系統將自動重新啟動系統,做為安全措施。為避免達到此輪詢時間,如果希望控制重新啟動時間的產品,則應該每天呼叫此方法。
- 如果系統重新啟動,則回應
rebooting
是;如果未執行任何更新,則傳回 false。
要求
<EMPTY>
回應
名稱 | 類型 |
---|---|
rebooting |
bool
|
螢幕
定義於 fuchsia.update/update.ithl
監控單一更新檢查。
想接收更新檢查進度資訊的客戶應實作這個通訊協定,並將用戶端提供給 Manager.CheckNow。
狀態
接收這項更新檢查的狀態更新。
所有狀態變更都會呼叫此要求,且不略過任何動作。不過,訊息傳送頻率會因為實作確認訊息的頻率而受到限制。
節流運送項目不會影響「Manager」的基礎狀態。並不會等到其確認狀態進入狀態機器的下一個狀態之前。管理員只會將狀態排入佇列,以便接收監控實作結果。
在 install_update 狀態期間,Manager 可能會在當機時收合多餘的資訊,例如已完成的分數。如果「監控」實作沒有即時回應 OnState()
要求,就會擲回。
- 要求
state
更新檢查的新狀態。
要求
名稱 | 類型 |
---|---|
state |
State
|
回應
<EMPTY>
結構
檢查人員回應
定義於 fuchsia.update/update.ithl
<EMPTY>
ENUMS
CheckNotStartedReason 嚴格
類型:uint32
定義於 fuchsia.update/update.ithl
這是一組要求所傳回的值,會立即檢查更新。
名稱 | 值 | 說明 |
---|---|---|
內部資訊 |
1 |
啟動更新檢查時發生內部錯誤。用戶端應該無法對這項錯誤執行任何有意義的操作,但必須稍後重試 (在發生多個錯誤時,於適當的延遲和輪詢後)。 |
無效 |
2 |
如果需要透過 CheckOptions 資料表提供 CheckNow 資料表的必要引數或選項 (或相衝突的值,系統會傳回這個錯誤)。 |
已啟用 |
3 |
發出這項要求時,已有另一項更新檢查作業。系統將不會啟動新的更新檢查, |
已結清 |
4 |
系統不會啟動更新檢查,因為用戶端要求在短時間內進行過多檢查要求。 注意:用戶端「不應」嘗試進行背景更新的頻率高於 fuchsia.update.Manager 頻率。 如果客戶濫用這項功能,就會遭到限制。 |
發起人嚴格
類型:uint32
定義於 fuchsia.update/update.ithl
啟動更新檢查的人員或啟動程序。
名稱 | 值 | 說明 |
---|---|---|
使用者 |
1 |
更新檢查是由互動式使用者啟動,否則使用者會遭到封鎖,正在等待這個更新檢查的結果。只有在有使用者互動的 UI 元素或流程啟動這項更新檢查時,才能使用這份試算表。 |
服務 |
2 |
更新檢查是由服務啟動,而不是針對系統面向的使用者。 |
InstallationDeferralReason 彈性
類型:uint32
定義於 fuchsia.update/update.ithl
這是延遲更新更新時所提供的一組值。
名稱 | 值 | 說明 |
---|---|---|
CURRENT_SYSTEM_NOT_COMMITTED |
1 |
未安裝目前的系統,因此無法安裝更新。我們建議消費者使用 CommitStatusProvider 來判斷何時要重試更新檢查,以安裝更新。 |
表格
嘗試選項
定義於 fuchsia.update/update.ithl
更新嘗試監控器的詳細資料。
一般 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
initiator |
Initiator
|
發起更新的使用者或啟動人。這可能會影響更新檢查的方式。 |
CheckOptions
定義於 fuchsia.update/update.ithl
更新檢查的設定選項。
一般 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
initiator |
Initiator
|
發起更新的使用者或啟動人。系統會將其視為政策輸入內容,這可能會影響更新檢查的執行方式。 此為必填欄位。 |
2 |
allow_attaching_to_existing_update_check |
bool
|
如果更新正在進行中的更新,可以改為將監控器附加至進行中的更新,而不是未讓這項要求檢查更新。這個做法可能會將使 ALREADY_IN_PROGRESS 視為非錯誤情況。 |
正在檢查更新資料
定義於 fuchsia.update/update.ithl
這是與 checking_for_updates
相關聯的資料集。(目前無)
一般 | 欄位 | 類型 | 說明 |
---|
ErrorCheckingForUpdateData
定義於 fuchsia.update/update.ithl
這是與 error_checking_for_update
狀態相關的資料集。(目前無)
一般 | 欄位 | 類型 | 說明 |
---|
InstallDeferredData
定義於 fuchsia.update/update.ithl
這是與 installation_deferred_by_policy
狀態相關的資料集。
一般 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
update |
UpdateInfo
|
|
2 |
deferral_reason |
InstallationDeferralReason
|
安裝錯誤資料
定義於 fuchsia.update/update.ithl
這是與 installation_error
狀態相關的資料集。(目前無)
一般 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
update |
UpdateInfo
|
|
2 |
installation_progress |
InstallationProgress
|
安裝進度
定義於 fuchsia.update/update.ithl
它會說明目前更新的更新進度。
一般 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
fraction_completed |
float32
|
完成安裝的比例 [0-1.0f]。 |
正在安裝資料
定義於 fuchsia.update/update.ithl
這一組資料是與安裝更新相關狀態相關的資料集:
installing_update
waiting_for_reboot
一般 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
update |
UpdateInfo
|
|
2 |
installation_progress |
InstallationProgress
|
沒有可用資料
定義於 fuchsia.update/update.ithl
這是與 no_update_available
狀態相關的資料集。(目前無)
一般 | 欄位 | 類型 | 說明 |
---|
更新資訊
定義於 fuchsia.update/update.ithl
說明可安裝的更新。
一般 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
version_available |
string[128]
|
說明可用版本的字串。可以是語意版本 (A.B.C.D) 或不透明雜湊。用戶端「不得」嘗試檢查這個值,而僅供顯示之用。 |
2 |
download_size |
uint64
|
可能會因為套用這項更新而下載的位元組總數。 |
3 |
urgent |
bool
|
更新內容是否為緊急內容。預設值為 false。 |
英國
Manager_CheckNow_Result 嚴格
定義於 fuchsia.update/update.ithl
一般 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Manager_CheckNow_Response
|
|
2 |
err |
CheckNotStartedReason
|
州/省嚴格
定義於 fuchsia.update/update.ithl
監控在更新檢查期間可接收的一組狀態。
進入終端機狀態後,更新檢查就會結束,如下圖所示的右側沒有箭頭,而沒有任何箭頭。
狀態機器圖
+----------------------+ +---------------------------------+
| checking_for_updates |---->| error_checking_for_update |
+----------------------+ +---------------------------------+
|
| +---------------------------------+
+---------------->| no_update_available |
| +---------------------------------+
|
| +---------------------------------+
+---------------->| installation_deferred_by_policy |
| +---------------------------------+
v
+----------------------+ +---------------------------------+
| installing_update |---->| installation_error |
+----------------------+ +---------------------------------+
|
| +---------------------------------+
+---------------->| waiting_for_reboot |
+---------------------------------+
一般 | Variant | 類型 | 說明 |
---|---|---|---|
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 |
這是通訊協定傳回的版本字串長度上限 |