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

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

(唯讀)

每個 Binding 都有一個目標實體,並在此處命名。除了 Weave 節點 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
一個空白指標,指向要儲存在交換內容中的應用程式狀態物件,以供日後使用。
傳回
指向 ExchangeContext 物件的指標,或在失敗時提供 NULL。

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

處理繫結失敗。

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

詳細說明
參數
[in] aReport
也就是指出發生錯誤的 StatusReport 參照。
另請參閱:
CompleteConfirm(StatusReport &aReport)

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

只初始化一個節點 ID 的繫結

這會產生繫結至所設預設傳輸的繫結。

詳細說明
參數
[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
)

檢查是否為繫結免費。

在這種情況下,「免費」代表「具有已定義的對等節點 ID」。IsFree() 應視為「已呼叫 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 物件的解構函式。

清除所有內部狀態「並」視需要關閉公開連線。