fuchsia.update

新增時間:7

通訊協定

企圖監控

定義於 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

這是延遲更新更新時所提供的一組值。

名稱說明
1

未安裝目前的系統,因此無法安裝更新。我們建議消費者使用 CommitStatusProvider 來判斷何時要重試更新檢查,以安裝更新。

表格

嘗試選項

定義於 fuchsia.update/update.ithl

更新嘗試監控器的詳細資料。

一般欄位類型說明
initiator Initiator

發起更新的使用者或啟動人。這可能會影響更新檢查的方式。

CheckOptions

定義於 fuchsia.update/update.ithl

更新檢查的設定選項。

一般欄位類型說明
initiator Initiator

發起更新的使用者或啟動人。系統會將其視為政策輸入內容,這可能會影響更新檢查的執行方式。

此為必填欄位。

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 狀態相關的資料集。

一般欄位類型說明
update UpdateInfo
deferral_reason InstallationDeferralReason

安裝錯誤資料

定義於 fuchsia.update/update.ithl

這是與 installation_error 狀態相關的資料集。(目前無)

一般欄位類型說明
update UpdateInfo
installation_progress InstallationProgress

安裝進度

定義於 fuchsia.update/update.ithl

它會說明目前更新的更新進度。

一般欄位類型說明
fraction_completed float32

完成安裝的比例 [0-1.0f]。

正在安裝資料

定義於 fuchsia.update/update.ithl

這一組資料是與安裝更新相關狀態相關的資料集:

  • installing_update
  • waiting_for_reboot

一般欄位類型說明
update UpdateInfo
installation_progress InstallationProgress

沒有可用資料

定義於 fuchsia.update/update.ithl

這是與 no_update_available 狀態相關的資料集。(目前無)

一般欄位類型說明

更新資訊

定義於 fuchsia.update/update.ithl

說明可安裝的更新。

一般欄位類型說明
version_available string[128]

說明可用版本的字串。可以是語意版本 (A.B.C.D) 或不透明雜湊。用戶端「不得」嘗試檢查這個值,而僅供顯示之用。

download_size uint64

可能會因為套用這項更新而下載的位元組總數。

urgent bool

更新內容是否為緊急內容。預設值為 false。

英國

Manager_CheckNow_Result 嚴格

定義於 fuchsia.update/update.ithl

一般Variant類型說明
response Manager_CheckNow_Response
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類型說明
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

這是通訊協定傳回的版本字串長度上限