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{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
列舉
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

繫結目標的 64 位元節點 ID。

(唯讀)

每個 Binding 都有一個目標實體,在此處命名。除了 Weave 節點 ID 以外,這個 ID 也可以為服務端點命名。

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

指向完成這個繫結 (選用) ServiceManager 物件的指標。

(唯讀)

與 Weave 服務繫結時,可在初始化時提供 64 位元服務端點 ID,以取代 Weave 節點 ID。在這種情況下,還需要 ServiceManager 物件才能完成繫結。一般 TCP 或 WRMP 繫結不需要 ServiceManager 物件。

mState

uint8_t mState

目前的 Binding 物件狀態。

只有一個「完成」作業可以一次執行,但無論如何,如果您要求完成已完成的繫結,作業只會立即呼叫確認函式。下方的狀態變數會追蹤目前的狀態並做為上鎖。

mTransport

uint8_t mTransport

用於完成這個繫結的傳輸。

(唯讀)

mTransport 的可能值由 DMConstants.h 定義。

公開函式

繫結

 Binding(
  void
)

Binding 物件的預設建構函式。

清除所有內部狀態。

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

處理繫結要求的確認。

詳細資料
參數
[in] aConnection
指向繫結目標的有效 WeaveConnection

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

處理繫結要求失敗。

詳細資料
參數
[in] aReport
說明失敗的 StatusReport 物件的參照。

CompleteConfirm

void CompleteConfirm(
  void
)

處理繫結要求的確認。

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

要求完成繫結。

繫結完成至少是需要 TCP 的繫結,針對提供存取 ExchangeManager 執行個體的特定 ProtocolEngine 物件執行。

詳細資料
參數
[in] aEngine
指向正在執行完成作業的 ProtocolEngine 物件指標。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INCORRECT_STATE
表示繫結已完成。
WEAVE_ERROR_NO_MEMORY
如果需要連線且沒有可用連線
傳回
否則,在嘗試連線時會傳回任何 WEAVE_ERROR

連線

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

提供已完成的連線,以完成 TCP 繫結。

剛初始化的 TCP 繫結必須先完成才能使用。一般而言,當應用程式嘗試使用繫結來傳送訊息時,系統會視需要執行此操作,但也可透過提供 Weave 連線來明確完成這項操作。

詳細資料
參數
[in] aConnection
指向用來完成繫結的 WeaveConnection 的指標。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INCORRECT_STATE
如果繫結已有連線,
WEAVE_ERROR_INVALID_ARGUMENT
如果連線為空值,

完成

void Finalize(
  void
)

「未完成」並從中釋放出一個繫結

繫結可能有需要清除的狀態,例如:連線中斷,除了透過 Free() 方法清除其初始狀態的狀態之外,Uncomplete() 方法也會處理。此方法主要是為了方便起見,會同時叫用兩者。

另請參閱:
完成(WEAVE_ERROR)

完成

void Finalize(
  WEAVE_ERROR aErr
)

「未完成」並從中釋放出一個繫結

繫結可能有需要清除的狀態,例如:連線中斷,除了透過 Free() 方法清除其初始狀態的狀態之外,Uncomplete() 方法也會處理。此方法主要是為了方便起見,會同時叫用兩者。

詳細資料
參數
[in] aErr
這個錯誤代碼表示要求原因。如果沒有為 WEAVE_NO_ERROR,表示 TCP 連線可能遭到取消。
另請參閱:
Finalize(void)

免費

void Free(
  void
)

清除繫結狀態。

無條件將所有繫結狀態傳回至原始狀態。

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Binding 產生 ExchangeContext 物件。

詳細資料
參數
[in] aExchangeMgr
指向要求背景資訊交換管理員的指標。
[in] aAppState
應用程式狀態物件的 void 指標,儲存在交換情境中供日後使用。
傳回
ExchangeContext 物件的指標,或在失敗時指向 NULL。

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

處理繫結失敗。

系統會叫用此方法,並在繫結失敗「之後」(即叫用 CompleteConfirm() 後顯示狀態表示成功) 時,叫用較高層級的處理常式。

詳細資料
參數
[in] aReport
參考資料狀態報告,說明問題。
另請參閱:
CompleteConfirm(StatusReport &amp;aReport)

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

只使用節點 ID 初始化 Binding

這樣就會產生具備設定預設傳輸的繫結。

詳細資料
參數
[in] aPeerNodeId
繫結目標 64 位元 ID 的參照。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_ARGUMENT
繫結未指定。

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

根據對等 ID 和傳輸方式初始化 Binding 物件。

詳細資料
參數
[in] aPeerNodeId
對繫結目標的 64 位元節點 ID 參照。
[in] aTransport
傳輸規格,來自 WeaveTransportOption。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_ARGUMENT
繫結未指定。

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Binding 物件初始化為服務端點。

你可以透過這個方式繫結至 Nest 服務的特定端點。此類型的繫結需要多階段完成程序,其中可能包括填入或更新本機服務目錄快取。大多數情況下,這個程序不會在應用程式中顯示,但表示程序後期產生的錯誤通常是透過相關的「確認」動作傳送回呼 (在之後 (有時很長) - 使用 (且完成) 繫結的原始要求。

詳細資料
參數
[in] aServiceEpt
針對 Weave 服務端點的 64 位元 ID 參照。
[in] aServiceMgr
指向服務管理員執行個體的指標,用於查詢及連結服務級別。
[in] aAuthMode
連線時使用的驗證模式。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_ARGUMENT
繫結未指定。

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

使用 WeaveConnection 初始化 Binding 物件。

詳細資料
參數
[in] aConnection
指向 WeaveConnection 的指標,做為繫結的基礎。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_ARGUMENT
繫結未指定。

IsComplete

bool IsComplete(
  void
)

檢查繫結是否已完成。

詳細資料
傳回
如果有,會傳回 true,否則傳回 false。
另請參閱:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

檢查是一項免費繫結。

「免費」這裡所說的「具有已定義的對等節點」 編號」。IsFree() should be thought of as meaning &quot;has had Free() ,且此後未曾使用。」

詳細資料
傳回
如果繫結為免費,則為 true,否則傳回 false。

UncompleteRequest

void UncompleteRequest(
  void
)

導致繫結不完整。

基本上,繫結應存在「未完成」對其呼叫此方法之後的狀態,但更具體來說,繫結本身不包含任何相關狀態,例如:TCP 連線,也應該清除。應用程式可能會考慮叫用 UncompleteRequest(),藉此清除錯誤。

另請參閱:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

導致繫結不完整。

基本上,繫結應存在「未完成」對其呼叫此方法之後的狀態,但更具體來說,繫結本身不包含任何相關狀態,例如:TCP 連線,也應該清除。應用程式可能會考慮叫用 UncompleteRequest(),藉此清除錯誤。

詳細資料
參數
[in] aErr
如果沒有 WEAVE_NO_ERROR,系統會取消現有的連線 (如果有的話),而不是安全關閉。
另請參閱:
UncompleteRequest(void)

~繫結

virtual  ~Binding(
  void
)

Binding 物件的解構函式。

清除所有內部狀態,「AND」(如有必要) 關閉公開連線。