nl:: Weave:: Profiles:: DataManagement_Legacy:: Binding
#include <src/lib/profiles/data-management/Legacy/Binding.h>
Binding 類別則可使用 Weave 代表應用程式實體管理通訊狀態。
摘要
當應用程式想要使用 Weave 與遠端實體通訊時,有各式各樣的選項。Binding 類別會對應這些選項並排列排列方式,讓簡單條目簡單又不易操作。適用選項包括:
- 與已知對等節點的單點傳播 UDP 通訊。
- 「any」的 UDP 廣播節點。
- 與已知對等節點的單點傳播 WRMP 通訊。
- 與已知對等節點的 TCP 通訊。
- 透過 Service Manager 執行個體,與已知服務端點的 TCP 通訊進行設定。
- 以預先建立的連線為基礎的 TCP 通訊。
建構函式和解構函式 |
|
---|---|
Binding(void)
Binding 物件的預設建構函式。
|
|
~Binding(void)
Binding 物件的解構函式。
|
公開類型 |
|
---|---|
@165{
|
列舉 Binding 物件狀態集合。 |
公開屬性 |
|
---|---|
mAuthMode
|
WeaveAuthMode
要使用的 Weave 驗證模式。
|
mConnection
|
指向這個繫結中正在使用的 Weave 連線指標。
|
mEngine
|
指向與這個 Binding 相關的 ProtocolEngine 物件指標。
|
mPeerNodeId
|
uint64_t
繫結目標的 64 位元節點 ID。
|
mServiceMgr
|
指向完成這個繫結 (選用) ServiceManager 物件的指標。
|
mState
|
uint8_t
目前的 Binding 物件狀態。
|
mTransport
|
uint8_t
用於完成這個繫結的傳輸。
|
公開函式 |
|
---|---|
CompleteConfirm(WeaveConnection *aConnection)
|
void
處理繫結要求的確認。
|
CompleteConfirm(StatusReport & aReport)
|
void
處理繫結要求失敗。
|
CompleteConfirm(void)
|
void
處理繫結要求的確認。
|
CompleteRequest(ProtocolEngine *aEngine)
|
要求完成繫結。
|
Connect(WeaveConnection *aConnection)
|
提供已完成的連線,以完成 TCP 繫結。
|
Finalize(void)
|
void
「未完成」並從中釋放出一個繫結
|
Finalize(WEAVE_ERROR aErr)
|
void
「未完成」並從中釋放出一個繫結
|
Free(void)
|
void
清除繫結狀態。
|
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
|
從 Binding 產生 ExchangeContext 物件。
|
IncompleteIndication(StatusReport & aReport)
|
void
處理繫結失敗。
|
Init(const uint64_t & aPeerNodeId)
|
只使用節點 ID 初始化 Binding。
|
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
|
根據對等 ID 和傳輸方式初始化 Binding 物件。
|
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
|
將 Binding 物件初始化為服務端點。
|
Init(WeaveConnection *aConnection)
|
使用 WeaveConnection 初始化 Binding 物件。
|
IsComplete(void)
|
bool
檢查繫結是否已完成。
|
IsFree(void)
|
bool
檢查是一項免費繫結。
|
UncompleteRequest(void)
|
void
導致繫結不完整。
|
UncompleteRequest(WEAVE_ERROR aErr)
|
void
導致繫結不完整。
|
公開類型
165 次
@165
Binding 物件狀態集合。
屬性 | |
---|---|
kState_Complete
|
繫結的狀態已完成且可供使用。 |
kState_Completing
|
在完成過程中,繫結的狀態。 |
kState_Incomplete
|
Binding 的初始 (和最終) 狀態。 |
公開屬性
mAuthMode
WeaveAuthMode mAuthMode
要使用的 Weave 驗證模式。
(READ_ONLY)
這種驗證模式用於受這個繫結規範的所有通訊。
mConnection
WeaveConnection * mConnection
指向這個繫結中正在使用的 Weave 連線指標。
(唯讀)
TCP 繫結可在跳台後立即透過連線初始化,或者在完成時分配一個。
mEngine
ProtocolEngine * mEngine
指向與這個 Binding 相關的 ProtocolEngine 物件指標。
繫結通常是指特定通訊協定引擎的繫結,而引擎最常做為存取 MessageLayer 的方式使用。我們也會在這裡追蹤這些資訊。
mPeerNodeId
uint64_t mPeerNodeId
mServiceMgr
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr
指向完成這個繫結 (選用) ServiceManager 物件的指標。
(唯讀)
與 Weave 服務繫結時,可在初始化時提供 64 位元服務端點 ID,以取代 Weave 節點 ID。在這種情況下,還需要 ServiceManager 物件才能完成繫結。一般 TCP 或 WRMP 繫結不需要 ServiceManager 物件。
mState
uint8_t mState
目前的 Binding 物件狀態。
只有一個「完成」作業可以一次執行,但無論如何,如果您要求完成已完成的繫結,作業只會立即呼叫確認函式。下方的狀態變數會追蹤目前的狀態並做為上鎖。
公開函式
CompleteConfirm
void CompleteConfirm( WeaveConnection *aConnection )
CompleteConfirm
void CompleteConfirm( StatusReport & aReport )
處理繫結要求失敗。
詳細資料 | |||
---|---|---|---|
參數 |
|
CompleteConfirm
void CompleteConfirm( void )
處理繫結要求的確認。
CompleteRequest
WEAVE_ERROR CompleteRequest( ProtocolEngine *aEngine )
要求完成繫結。
繫結完成至少是需要 TCP 的繫結,針對提供存取 ExchangeManager 執行個體的特定 ProtocolEngine 物件執行。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
||||||
傳回 |
否則,在嘗試連線時會傳回任何 WEAVE_ERROR。
|
連線
WEAVE_ERROR Connect( WeaveConnection *aConnection )
提供已完成的連線,以完成 TCP 繫結。
剛初始化的 TCP 繫結必須先完成才能使用。一般而言,當應用程式嘗試使用繫結來傳送訊息時,系統會視需要執行此操作,但也可透過提供 Weave 連線來明確完成這項操作。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
完成
void Finalize( void )
「未完成」並從中釋放出一個繫結
繫結可能有需要清除的狀態,例如:連線中斷,除了透過 Free() 方法清除其初始狀態的狀態之外,Uncomplete() 方法也會處理。此方法主要是為了方便起見,會同時叫用兩者。
另請參閱:完成(WEAVE_ERROR)
完成
void Finalize( WEAVE_ERROR aErr )
「未完成」並從中釋放出一個繫結
繫結可能有需要清除的狀態,例如:連線中斷,除了透過 Free() 方法清除其初始狀態的狀態之外,Uncomplete() 方法也會處理。此方法主要是為了方便起見,會同時叫用兩者。
詳細資料 | |||
---|---|---|---|
參數 |
|
Finalize(void)
免費
void Free( void )
清除繫結狀態。
無條件將所有繫結狀態傳回至原始狀態。
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
從 Binding 產生 ExchangeContext 物件。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
ExchangeContext 物件的指標,或在失敗時指向 NULL。
|
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
處理繫結失敗。
系統會叫用此方法,並在繫結失敗「之後」(即叫用 CompleteConfirm() 後顯示狀態表示成功) 時,叫用較高層級的處理常式。
詳細資料 | |||
---|---|---|---|
參數 |
|
CompleteConfirm(StatusReport &aReport)。
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
只使用節點 ID 初始化 Binding。
這樣就會產生具備設定預設傳輸的繫結。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
根據對等 ID 和傳輸方式初始化 Binding 物件。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
Init
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
將 Binding 物件初始化為服務端點。
你可以透過這個方式繫結至 Nest 服務的特定端點。此類型的繫結需要多階段完成程序,其中可能包括填入或更新本機服務目錄快取。大多數情況下,這個程序不會在應用程式中顯示,但表示程序後期產生的錯誤通常是透過相關的「確認」動作傳送回呼 (在之後 (有時很長) - 使用 (且完成) 繫結的原始要求。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
Init
WEAVE_ERROR Init( WeaveConnection *aConnection )
使用 WeaveConnection 初始化 Binding 物件。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
IsComplete
bool IsComplete( void )
IsFree
bool IsFree( void )
檢查是一項免費繫結。
「免費」這裡所說的「具有已定義的對等節點」 編號」。IsFree() should be thought of as meaning "has had Free() ,且此後未曾使用。」
詳細資料 | |
---|---|
傳回 |
如果繫結為免費,則為 true,否則傳回 false。
|
UncompleteRequest
void UncompleteRequest( void )
導致繫結不完整。
基本上,繫結應存在「未完成」對其呼叫此方法之後的狀態,但更具體來說,繫結本身不包含任何相關狀態,例如:TCP 連線,也應該清除。應用程式可能會考慮叫用 UncompleteRequest(),藉此清除錯誤。
另請參閱:UncompleteRequest(WEAVE_ERROR )
UncompleteRequest
void UncompleteRequest( WEAVE_ERROR aErr )
導致繫結不完整。
基本上,繫結應存在「未完成」對其呼叫此方法之後的狀態,但更具體來說,繫結本身不包含任何相關狀態,例如:TCP 連線,也應該清除。應用程式可能會考慮叫用 UncompleteRequest(),藉此清除錯誤。
詳細資料 | |||
---|---|---|---|
參數 |
|
UncompleteRequest(void)