通訊協定
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] |
元素的註解清單。 |