通訊協定
生命週期
定義於 fuchsia.process.lifecycle/lifecycle.fidl
元件可以實作生命週期通訊協定,以便接收生命週期事件的通知。還可以將部分狀態儲存在架構中,以便在下次啟動時重新傳送至元件 (這種做法稱為「託管」)。
ELF Runner 使用這個通訊協定向元件傳達生命週期變更,如要進一步瞭解這個通訊協定的使用方式,請參閱:https://fuchsia.dev/fuchsia-src/concepts/components/v2/elf_runner#lifecycle
OnEscrow
在元件離開前不久後返回狀態。
ELF 執行元件收到此事件後,就會與架構安排時間,等到元件目前的執行程序完成,然後在 outgoing_dir
上觀察到 ZX_CHANNEL_READABLE
信號時,再次啟動元件。
重複呼叫會取代先前的託管值。我們不建議這麼做。
透過 OnEscrow
託管的處理序一律會傳送至元件的下一個執行。
回應
名稱 | 類型 |
---|---|
payload |
LifecycleOnEscrowRequest
|
停止
程序必須在終止前清除狀態,而且必須關閉代管 Lifecycle
通訊協定的管道 (準備終止時)。程序應會在清理完成後結束。系統得自行斟酌是否要在關閉 Lifecycle
管道前終止該程序。
要求
<EMPTY>
資料表
LifecycleOnEscrowRequest 資源
定義於 fuchsia.process.lifecycle/lifecycle.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
outgoing_dir |
server_end<fuchsia.io/Directory>
|
提報傳出目錄伺服器端點。每當元件再次啟動時,系統都會傳回做為 |
2 |
escrowed_dictionary |
fuchsia.component.sandbox/Dictionary
|
託管部分使用者定義狀態。每當元件再次啟動時,系統就會傳回這個項目,做為 架構不會等待這些物件的任何信號。 範例假設元件需要提報事件組合,代表某些昂貴的計算結果。它可以建立字典,將事件組合放入適當的鍵 (例如 |