nl:: Weave:: Profiles:: DataManagement_Legacy:: Binding
#include <src/lib/profiles/data-management/Legacy/Binding.h>
Binding 類別可代表使用 Weave 管理應用程式實體的通訊狀態。
摘要
當應用程式要使用 Weave 與遠端實體通訊時,有多種選項可供選擇。Binding 類別可對這些選項有其排列,並排列方式讓容易操作簡單,其中較困難的內容則至少容易處理。涵蓋的選項包括:
- 單點傳播 UDP 通訊。
- 包含「任何」節點的 UDP 廣播。
- 單點傳播 WRMP 通訊。
- 與已知對等互連節點的 TCP 通訊。
- 使用 Service Manager 執行個體設定內容,與已知服務端點之間的 TCP 通訊。
- 以預先建立的連線為基礎的 TCP 通訊。
建構函式和解構函式 |
|
---|---|
Binding(void)
Binding 物件的預設建構函式。
|
|
~Binding(void)
Binding 物件的解構函式。
|
公開類型 |
|
---|---|
@165{
|
列舉 Binding 物件狀態的組合。 |
公開屬性 |
|
---|---|
mAuthMode
|
WeaveAuthMode
要使用的 Weave 驗證模式。
|
mConnection
|
指向這個繫結目前使用的 Weave 連線指標。
|
mEngine
|
指向與這個繫結相關的 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 的繫結。
|
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
|
Binding 的狀態。 |
kState_Incomplete
|
繫結的初始 (和最終) 狀態。 |
公開屬性
mAuthMode
WeaveAuthMode mAuthMode
要使用的 Weave 驗證模式。
(唯讀)
此驗證模式會在此繫結管理的所有通訊中使用。
mConnection
WeaveConnection * mConnection
指向這個繫結目前使用的 Weave 連線指標。
(唯讀)
TCP 繫結可以透過訊號立即啟動連線進行初始化,或是在結束時分配一個繫結。
mEngine
ProtocolEngine * mEngine
指向與這個繫結相關的 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 的繫結。
這會產生繫結至所設預設傳輸的繫結。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
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 )
檢查是否為繫結免費。
在這種情況下,「免費」代表「具有已定義的對等節點 ID」。IsFree() 應視為「已呼叫 Free(),從此開始就未曾使用」。
詳細說明 | |
---|---|
傳回 |
如果繫結是免費的,則傳回 true,否則傳回 false。
|
UncompleteRequest
void UncompleteRequest( void )
使繫結不完整。
基本上,在呼叫此方法後,繫結應處於「未完成」狀態,但更若要巧妙地清理未包含在繫結本身中的相關狀態 (例如 TCP 連線),也應加以清除。應用程式可能會考慮叫用 UncompleteRequest(),做為清除錯誤的一部分。
另請參閱:UncompleteRequest(WEAVE_ERROR )
UncompleteRequest
void UncompleteRequest( WEAVE_ERROR aErr )
使繫結不完整。
基本上,在呼叫此方法後,繫結應處於「未完成」狀態,但更若要巧妙地清理未包含在繫結本身中的相關狀態 (例如 TCP 連線),也應加以清除。應用程式可能會考慮叫用 UncompleteRequest(),做為清除錯誤的一部分。
詳細說明 | |||
---|---|---|---|
參數 |
|
UncompleteRequest(void)