通訊協定
AnnotationController
在 fuchsia.element/annotations.fidl 中定義
建立、讀取、更新及刪除註解的介面,通常是元素或其檢視畫面。
GetAnnotations
傳回元素目前的 Annotations。
- 無法傳回註解,就會發生 GetAnnotationsError錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 | 
|---|---|
| payload | AnnotationController_GetAnnotations_Result | 
UpdateAnnotations
新增、更新及移除註解。
伺服器應遵守以下慣例:
- 如果 annotations_to_set中的索引鍵是新的,則會加入新註解
- 如果 annotations_to_set中已有索引鍵,則會更新註解值
- 如果 annotations_to_delete中的索引鍵不存在,系統會忽略該鍵
在對 UpdateAnnotations() 的呼叫中不能重複出現相同索引鍵。換句話說,設定兩個具有相符索引鍵的註解是違法行為,因為系統會嘗試設定註解並將其刪除。
如果作業造成錯誤,註解會維持不變,且不會部分更新。
- 如果 annotations_to_set和annotations_to_delete中都有相同的鍵,則會傳回UpdateAnnotationsError.INVALID_ARGS錯誤。
- 如果 annotations_to_set或annotations_to_delete中的金鑰包含空白命名空間,則會傳回UpdateAnnotationsError.INVALID_ARGS錯誤。
- 如果無法讀取 annotations_to_set中的AnnotationValue.buffer,則會傳回UpdateAnnotationsError.INVALID_ARGS錯誤。
- 如果作業產生超過 MAX_ANNOTATIONS_PER_ELEMENT個註解,則會傳回UpdateAnnotationsError.TOO_MANY_ANNOTATIONS錯誤。
要求
| 名稱 | 類型 | 
|---|---|
| annotations_to_set | Annotations | 
| annotations_to_delete | AnnotationKeys | 
回應
| 名稱 | 類型 | 
|---|---|
| payload | AnnotationController_UpdateAnnotations_Result | 
WatchAnnotations
當一或多個物件已變更,或用戶端首次呼叫這個方法時,會傳回完整的 Annotations。
這項作業不會封鎖來自用戶端的其他要求,但一次只能在連線中提出一個 WatchAnnotations 要求。如果用戶端在等待上一個要求完成前,發出第二個 WatchAnnotations 要求,系統就會關閉連線。
- 無法傳回註解,就會發生 WatchAnnotationsError錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 | 
|---|---|
| payload | AnnotationController_WatchAnnotations_Result | 
控制器
在 fuchsia.element/element_manager.fidl 中定義的
這個介面可讓 Manager (元素建議工具) 用戶端控管建議元素的生命週期和註解。
生命週期
用戶端必須讓 Controller 保持連線,確保元素會留在工作階段中且不會遭到刪除。Controller 關閉後,元素及其元件就會終止。元素也可以自行終止,導致 Controller 關閉。
GetAnnotations
傳回元素目前的 Annotations。
- 無法傳回註解,就會發生 GetAnnotationsError錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 | 
|---|---|
| payload | AnnotationController_GetAnnotations_Result | 
UpdateAnnotations
新增、更新及移除註解。
伺服器應遵守以下慣例:
- 如果 annotations_to_set中的索引鍵是新的,則會加入新註解
- 如果 annotations_to_set中已有索引鍵,則會更新註解值
- 如果 annotations_to_delete中的索引鍵不存在,系統會忽略該鍵
在對 UpdateAnnotations() 的呼叫中不能重複出現相同索引鍵。換句話說,設定兩個具有相符索引鍵的註解是違法行為,因為系統會嘗試設定註解並將其刪除。
如果作業造成錯誤,註解會維持不變,且不會部分更新。
- 如果 annotations_to_set和annotations_to_delete中都有相同的鍵,則會傳回UpdateAnnotationsError.INVALID_ARGS錯誤。
- 如果 annotations_to_set或annotations_to_delete中的金鑰包含空白命名空間,則會傳回UpdateAnnotationsError.INVALID_ARGS錯誤。
- 如果無法讀取 annotations_to_set中的AnnotationValue.buffer,則會傳回UpdateAnnotationsError.INVALID_ARGS錯誤。
- 如果作業產生超過 MAX_ANNOTATIONS_PER_ELEMENT個註解,則會傳回UpdateAnnotationsError.TOO_MANY_ANNOTATIONS錯誤。
要求
| 名稱 | 類型 | 
|---|---|
| annotations_to_set | Annotations | 
| annotations_to_delete | AnnotationKeys | 
回應
| 名稱 | 類型 | 
|---|---|
| payload | AnnotationController_UpdateAnnotations_Result | 
WatchAnnotations
當一或多個物件已變更,或用戶端首次呼叫這個方法時,會傳回完整的 Annotations。
這項作業不會封鎖來自用戶端的其他要求,但一次只能在連線中提出一個 WatchAnnotations 要求。如果用戶端在等待上一個要求完成前,發出第二個 WatchAnnotations 要求,系統就會關閉連線。
- 無法傳回註解,就會發生 WatchAnnotationsError錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 | 
|---|---|
| payload | AnnotationController_WatchAnnotations_Result | 
GraphicalPresenter
在 fuchsia.element/graphical_presenter.fidl 中定義
這個介面用於指示伺服器顯示圖形檢視畫面,以及觀察及控制檢視區塊的生命週期。
PresentView
顯示view_spec描述的檢視畫面。
如果提供 view_controller_request,就會連線至由 GraphicalPresenter 伺服器實作的 ViewController。當檢視畫面關閉時,ViewController 管道會使用 ZX_OK 關閉,此時可以放心清除備份檢視畫面的資源。如要關閉檢視畫面,用戶端應呼叫 ViewController.Dismiss() 並等待 ZX_OK 程式碼。如未提供 view_controller_request 控制代碼,用戶端就無法觀測檢視畫面的生命週期。
- view_spec說明要顯示的檢視畫面
- annotation_controller是- AnnotationController的控制代碼,可讓- GraphicalPresenter伺服器觀察及更新檢視畫面的註解。
- view_controller_request:對檢視區塊控制器的選用要求
- 錯誤 view_spec包含view_holder_token和view_ref(用於 Gfx 檢視區塊) 或viewport_creation_token(適用於 Flatland 檢視表),但不能同時包含兩者。如果同時設定兩者,系統會傳回錯誤PresentViewError.INVALID_ARGS。
- 如果 spec.view_holder_token或spec.view_ref遺失或無效,就會發生PresentViewError.INVALID_ARGS錯誤。
要求
| 名稱 | 類型 | 
|---|---|
| view_spec | ViewSpec | 
| annotation_controller | AnnotationController? | 
| view_controller_request | server_end<ViewController>? | 
回應
| 名稱 | 類型 | 
|---|---|
| payload | GraphicalPresenter_PresentView_Result | 
經理
在 fuchsia.element/element_manager.fidl 中定義的
用於在工作階段中加入元素的介面。
「元素」元件應被例項化為工作階段的子項,並 (可選擇是否要) 以某種方式與使用者互動。
工作階段通常會實作 Manager,並在需要時轉送流量。為了讓 ffx session add 等工具順利運作,工作階段必須將 Manager 公開給其父項。
舉例來說,工作階段中的元件可能是非互動式應用程式,會監聽網路來向使用者顯示元素。收到指令後,元件會呼叫 ProposeElement()。
ProposeElement
要求
| 名稱 | 類型 | 
|---|---|
| spec | Spec | 
| controller | server_end<Controller>? | 
回應
| 名稱 | 類型 | 
|---|---|
| payload | Manager_ProposeElement_Result | 
RemoveElement
將 name 識別的元素從工作階段中移除。如果元素是永久元素,就會永久移除。該元素可能已使用的永久儲存空間不會受到影響。
要求
| 名稱 | 類型 | 
|---|---|
| name | string | 
回應
| 名稱 | 類型 | 
|---|---|
| payload | Manager_RemoveElement_Result | 
ViewController
在 fuchsia.element/graphical_presenter.fidl 中定義
讓 GraphicalPresenter 的用戶端控管透過 PresentView() 呈現的個別檢視畫面。
關閉
指示簡報者關閉相關檢視畫面。關閉後,ViewController 管道就會關閉,並顯示 ZX_OK 憑證。此時,您可以放心清除任何支援檢視區塊的資源 (例如終止元件)。
用戶端應先呼叫 Dismiss(),再關閉 ViewController 管道。
要求
<EMPTY>
OnPresented
表示檢視畫面現在呈現的事件。
回應
<EMPTY>
結構
註解資源
在 fuchsia.element/annotations.fidl 中定義
由鍵/值組合動態定義的註解。
工作階段架構不會以任何方式限制 key 和 value 的內容。交換註解的合作元件必須根據自己的慣例定義及驗證註解項目。
| 廣闊 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| key | AnnotationKey | 這個註解的 ID。 | 無預設 | 
| value | AnnotationValue | 這個註解的內容。 | 無預設 | 
AnnotationController_GetAnnotations_Response 資源
在 fuchsia.element/annotations.fidl 中定義的
| 廣闊 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| annotations | Annotations | 無預設 | 
AnnotationController_UpdateAnnotations_Response
在 fuchsia.element/annotations.fidl 中定義的
<EMPTY>
AnnotationController_WatchAnnotations_Response 資源
在 fuchsia.element/annotations.fidl 中定義的
| 廣闊 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| annotations | Annotations | 無預設 | 
AnnotationKey
在 fuchsia.element/annotations.fidl 中定義
fuchsia.element/Annotation 的鍵。
| 廣闊 | 類型 | 說明 | 預設 | 
|---|---|---|---|
| namespace | string[128] | 區分用戶端中金鑰群組的命名空間。 這麼做是為了將相關的金鑰分組在同一個 ID 下,並避免命名衝突。例如,工作階段可能會使用自訂命名空間定義實作作業專屬的註解。 必須提供命名空間,且不得留空。 命名空間「global」代表全域命名空間,保留給許多產品和工作階段元件通用的註解。 為確保相容性,用戶端在介紹新金鑰時,應使用不重複的命名空間,例如 UUID 或用戶端的元件網址。 | 無預設 | 
| value | string[128] | 這個註解的 ID,用於識別  | 無預設 | 
GraphicalPresenter_PresentView_Response
在 fuchsia.element/graphical_presenter.fidl 中定義的
<EMPTY>
Manager_ProposeElement_Response
在 fuchsia.element/element_manager.fidl 中定義的
<EMPTY>
Manager_RemoveElement_Response
在 fuchsia.element/element_manager.fidl 中定義的
<EMPTY>
ENUMS
GetAnnotationsError 嚴格限制
類型:uint32
在 fuchsia.element/annotations.fidl 中定義
ElementController/GetAnnotations 傳回錯誤。
| 名稱 | 物超所值 | 說明 | 
|---|---|---|
| BUFFER_READ_FAILED | 1 | 無法讀取註解的  | 
ManagerError 嚴格
類型:uint32
在 fuchsia.element/element_manager.fidl 中定義的
| 名稱 | 物超所值 | 說明 | 
|---|---|---|
| INVALID_ARGS | 1 | 元素規格格式錯誤。 | 
| NOT_FOUND | 2 | 無法解析元素的元件網址。 | 
| UNABLE_TO_PERSIST | 3 | 寫入永久儲存空間時發生問題,因此無法保留提議的元素。你提議的元素不會啟動。 | 
PresentViewError 嚴格
類型:uint32
在 fuchsia.element/graphical_presenter.fidl 中定義
當 GraphicalPresenter 無法顯示檢視畫面時傳回錯誤。
| 名稱 | 物超所值 | 說明 | 
|---|---|---|
| INVALID_ARGS | 1 | 提供的  | 
ProposeElementError strict
類型:uint32
在 fuchsia.element/element_manager.fidl 中定義的
使用 Manager 通訊協定時可能傳回的錯誤。
| 名稱 | 物超所值 | 說明 | 
|---|---|---|
| INVALID_ARGS | 1 | 元素規格格式錯誤。 | 
| NOT_FOUND | 2 | 無法解析元素的元件網址。 | 
UpdateAnnotationsError 嚴格
類型:uint32
在 fuchsia.element/annotations.fidl 中定義
AnnotationController/UpdateAnnotations 傳回錯誤
| 名稱 | 物超所值 | 說明 | 
|---|---|---|
| INVALID_ARGS | 1 | 傳遞至  | 
| TOO_MANY_ANNOTATIONS | 2 | 由於註解更新後,註解總數會超過 MAX_ANNOTATIONS_PER_ELEMENT 個。 | 
WatchAnnotationsError 彈性
類型:uint32
在 fuchsia.element/annotations.fidl 中定義
AnnotationController/WatchAnnotations 和 ElementController/WatchAnnotations 傳回錯誤。
| 名稱 | 物超所值 | 說明 | 
|---|---|---|
| BUFFER_READ_FAILED | 1 | 無法讀取註解的  | 
資料表
規格資源
在 fuchsia.element/element_manager.fidl 中定義的
要新增至工作階段的元素說明。
| 序數 | 廣闊 | 類型 | 說明 | 
|---|---|---|---|
| 1 | component_url | fuchsia.url/Url | 元素的元件網址。必填。 | 
| 2 | annotations | Annotations | 元素的初始註解。必要,但可以是空白向量。如果包含元素管理員網址註解 (允許但非必要),則「必須」與  | 
查看規格資源
在 fuchsia.element/graphical_presenter.fidl 中定義
可透過 GraphicalPresenter 呈現的檢視區塊說明。
| 序數 | 廣闊 | 類型 | 說明 | 
|---|---|---|---|
| 1 | view_holder_token | fuchsia.ui.views/ViewHolderToken | 呈現的 Gfx 檢視畫面的檢視畫面持有人權杖。請務必設定 Flatland 檢視畫面。必須設定  | 
| 2 | view_ref | fuchsia.ui.views/ViewRef | 呈現的 Gfx 檢視畫面的  | 
| 3 | annotations | Annotations | 與呈現檢視畫面相關聯的初始註解。系統會透過傳遞至  選用。 | 
| 4 | viewport_creation_token | fuchsia.ui.views/ViewportCreationToken | 呈現的 Flatland 檢視畫面的可視區域建立憑證。如為 Gfx 檢視畫面,則須未設定。必須設定  | 
聯合國
AnnotationController_GetAnnotations_Result 嚴格 資源
在 fuchsia.element/annotations.fidl 中定義
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | AnnotationController_GetAnnotations_Response | |
| 2 | err | GetAnnotationsError | 
AnnotationController_UpdateAnnotations_Result 嚴格
在 fuchsia.element/annotations.fidl 中定義
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | AnnotationController_UpdateAnnotations_Response | |
| 2 | err | UpdateAnnotationsError | 
AnnotationController_WatchAnnotations_Result 嚴格 資源
在 fuchsia.element/annotations.fidl 中定義
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | AnnotationController_WatchAnnotations_Response | |
| 2 | err | WatchAnnotationsError | 
AnnotationValue 嚴格 資源
在 fuchsia.element/annotations.fidl 中定義
fuchsia.element/Annotation 的值。
實際使用的欄位視註解類型而定。
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | text | string | |
| 2 | buffer | fuchsia.mem/Buffer | 
GraphicalPresenter_PresentView_Result 嚴格
在 fuchsia.element/graphical_presenter.fidl 中定義
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | GraphicalPresenter_PresentView_Response | |
| 2 | err | PresentViewError | 
Manager_ProposeElement_Result 嚴格
在 fuchsia.element/element_manager.fidl 中定義的
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | Manager_ProposeElement_Response | |
| 2 | err | ManagerError | 
Manager_RemoveElement_Result 嚴格
在 fuchsia.element/element_manager.fidl 中定義的
| 序數 | Variant | 類型 | 說明 | 
|---|---|---|---|
| 1 | response | Manager_RemoveElement_Response | |
| 2 | err | ManagerError | 
觀測站
| 名稱 | 物超所值 | 類型 | 說明 | 
|---|---|---|---|
| ANNOTATION_KEY_NAME | name | String | 集合中的元素名稱。如果未提供給  新增日期:19 | 
| ANNOTATION_KEY_PERSIST_ELEMENT | persist_element | String | 如果有這類元素,元素會在重新啟動後保留。 新增日期:19 | 
| ANNOTATION_KEY_URL | url | String | 元素的元件網址。 新增日期:19 | 
| MANAGER_NAMESPACE | element_manager | String | 新增日期:19 | 
| MAX_ANNOTATIONS_PER_ELEMENT | 1024 | uint32 | 單一元素或檢視畫面的註解數量上限。 | 
| MAX_ANNOTATION_KEY_NAMESPACE_SIZE | 128 | uint32 | 長度上限為  | 
| MAX_ANNOTATION_KEY_VALUE_SIZE | 128 | uint32 | 長度上限為  | 
別名
| 名稱 | 物超所值 | 說明 | 
|---|---|---|
| AnnotationKeys | vector[MAX_ANNOTATIONS_PER_ELEMENT] | 註解鍵清單。 | 
| 註解 | vector[MAX_ANNOTATIONS_PER_ELEMENT] | 元素的註解清單。 |