nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine

這是抽象類別。

#include <src/lib/profiles/data-management/Legacy/ProtocolEngine.h>

WDM 通訊協定引擎類別。

摘要

資料管理實體 (客戶或發布商) 擁有通訊協定引擎元件和資料管理工具元件。這個抽象類別代表通訊協定引擎的常見功能。

繼承

直接已知的子類別:
  nl::Weave::Profiles::DataManagement_Legacy::DMClient
  nl::Weave::Profiles::DataManagement_Legacy::DMPublisher

建構函式和解構函式

ProtocolEngine(void)
~ProtocolEngine(void)

受保護的屬性

mBindingTable[kBindingTableSize]
ProtocolEngine 內含一個繫結表。如果引擎除了接收廣播通知外,還需負責處理其他事項,可能就需至少包含一個項目。
mExchangeMgr
mResponseTimeout
uint32_t
mTransactionTable[kTransactionTableSize]

公開函式

BindConfirm(Binding *aBinding)
virtual WEAVE_ERROR
處理繫結要求已成功完成的確認。
BindConfirm(Binding *aBinding, StatusReport & aReport)
virtual WEAVE_ERROR
處理繫結要求失敗的確認。
BindRequest(const uint64_t & aPeerNodeId, uint8_t aTransport)
使用已知的對等節點 ID 和傳輸指定碼要求繫結。
BindRequest(const uint64_t & aPeerNodeId)
使用預設傳輸功能繫結至已知的對等互連。
BindRequest(nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
BindRequest(WeaveConnection *aConnection)
使用有效的 Weave 連線要求繫結。
IncompleteIndication(Binding *aBinding, StatusReport & aReport)
virtual void
處理繫結失敗的跡象。
IncompleteIndication(const uint64_t & aPeerNodeId, StatusReport & aReport)=0
virtual void
處理繫結變成不完整的跡象。
Init(WeaveExchangeManager *aExchangeMgr)
virtual WEAVE_ERROR
Init(WeaveExchangeManager *aExchangeMgr, uint32_t aResponseTimeout)
virtual WEAVE_ERROR
UnbindRequest(const uint64_t & aPeerNodeId)
void
要求復原繫結,並從繫結資料表中移除。
UnbindRequest(const uint64_t & aPeerNodeId, WEAVE_ERROR aErr)
void
要求復原繫結,並從繫結資料表中移除。

受保護的函式

Clear(void)
void
ClearBindingTable(void)
void
ClearTransactionTable(void)
void
DequeueTransaction(DMTransaction *aTransaction)
void
EnqueueTransaction(DMTransaction *aTransaction, Binding *aBinding)
EnqueueTransaction(DMTransaction *aTransaction)
FailTransactions(Binding *aBinding, StatusReport & aReport)
bool
Finalize(void)
virtual void
FinalizeBindingTable(void)
void
FinalizeTransactionTable(void)
void
FinalizeTransactions(Binding *aBinding)
void
FromExchangeCtx(ExchangeContext *aExchangeCtx)
GetBinding(const uint64_t & aPeerNodeId)
NewBinding(void)
StartTransaction(DMTransaction *aTransaction, Binding *aBinding)
StartTransaction(DMTransaction *aTransaction)
StatusResponse(ExchangeContext *aExchangeCtx, StatusReport & aStatus)

類別

nl::Weave::Profiles::DataManagement_Legacy::ProtocolEngine::DMTransaction

受保護的屬性

mBindingTable

Binding mBindingTable[kBindingTableSize]

ProtocolEngine 內含一個繫結表。如果引擎除了接收廣播通知外,還需負責處理其他事項,可能就需至少包含一個項目。

繫結一般會根據節點 ID 建立索引。也就是說,每個引擎只能有一個繫結至特定服務端點。

WDM 規格對於「預設繫結」的概念如果沒有提供明確目的地,這是傳遞的位置訊息。這大多用於非常簡易的裝置中,只有單一繫結或少量繫結會使用,而對於其他用途,僅是第一個結合的繫結形式。

mExchangeMgr

WeaveExchangeManager * mExchangeMgr

mResponseTimeout

uint32_t mResponseTimeout

mTransactionTable

TransactionTableEntry mTransactionTable[kTransactionTableSize]

公開函式

BindConfirm

virtual WEAVE_ERROR BindConfirm(
  Binding *aBinding
)

處理繫結要求已成功完成的確認。

繫結完成後,通訊協定引擎就會瀏覽交易表,並開始與該繫結相關的交易。

詳細資料
參數
[in] aBinding
已完成繫結的指標。
傳回
WEAVE_NO_ERROR 即成功。否則,系統會傳回無法啟動交易的 WEAVE_ERROR

BindConfirm

virtual WEAVE_ERROR BindConfirm(
  Binding *aBinding,
  StatusReport & aReport
)

處理繫結要求失敗的確認。

當繫結要求失敗時,通訊協定引擎必須瀏覽交易表,並根據繫結失敗任何交易。

詳細資料
參數
[in] aBinding
失敗繫結的指標。
[in] aReport
StateReport 物件的參照,其中詳細列出失敗原因。
傳回

BindRequest

WEAVE_ERROR BindRequest(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

使用已知的對等節點 ID 和傳輸指定碼要求繫結。

此要求具有對等互連節點 ID 和傳輸規格,會為該對等點設定繫結。只有在傳輸為 TCP 時,出價才會需要額外完成。如果對等點繫結已存在,則會重複使用。

詳細資料
參數
[in] aPeerNodeId
參照做為繫結目標的對等實體 64 位元節點 ID。
[in] aTransport
要使用的傳輸方式。
傳回
成功時傳回 WEAVE_NO_ERROR,如果繫結資料表已滿,則傳回 WEAVE_ERROR_NO_MEMORY。否則,會傳回 WEAVE_ERROR,表示初始化繫結失敗。
另請參閱:
WeaveTransportOption

BindRequest

WEAVE_ERROR BindRequest(
  const uint64_t & aPeerNodeId
)

使用預設傳輸功能繫結至已知的對等互連。

詳細資料
參數
[in] aPeerNodeId
參照做為繫結目標的對等實體 64 位元節點 ID。
傳回
WEAVE_NO_ERROR 即成功。否則,會傳回 WEAVE_ERROR 表示繫結作業失敗。

BindRequest

WEAVE_ERROR BindRequest(
  nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

BindRequest

WEAVE_ERROR BindRequest(
  WeaveConnection *aConnection
)

使用有效的 Weave 連線要求繫結。

您也可以使用現有的、開放的連線來建立繫結。請注意,以這種方式建立的繫結無需額外完成。

詳細資料
參數
[in] aConnection
指向要用於繫結的 Weave 連線的指標。
傳回
成功時傳回 WEAVE_NO_ERROR,如果繫結資料表已滿,則傳回 WEAVE_ERROR_NO_MEMORY。否則,系統會傳回錯誤,指出無法初始化繫結。

IncompleteIndication

virtual void IncompleteIndication(
  Binding *aBinding,
  StatusReport & aReport
)

處理繫結失敗的跡象。

繫結變成未完成時 (即 TCP 繫結關閉連線),通訊協定引擎必須導致所有依附於該繫結的交易失敗,包括呼叫其狀態處理常式。此外,不完整的指標也會傳遞至接受此方法的替代形式的任何父類別物件,而該方法會採用對等點 ID。

詳細資料
參數
[in] aBinding
失敗繫結的指標。
[in] aReport
StateReport 物件的參照,其中詳細列出失敗原因。

IncompleteIndication

virtual void IncompleteIndication(
  const uint64_t & aPeerNodeId,
  StatusReport & aReport
)=0

處理繫結變成不完整的跡象。

如果較高圖層要收到繫結失敗通知,請使用此方法,也就是將對等互連 ID 與狀態報告一併傳遞。事實上,由於這個方法是虛擬無效,因此所有 DMClientDMPublisher 子類別都必須提供實作方式。

詳細資料
參數
[in] aPeerNodeId
失敗繫結目標的對等互連節點或服務端點 64 位元 ID 參照。
[in] aReport
StateReport 物件的參照,其中詳細列出失敗原因。

Init

virtual WEAVE_ERROR Init(
  WeaveExchangeManager *aExchangeMgr
)

Init

virtual WEAVE_ERROR Init(
  WeaveExchangeManager *aExchangeMgr,
  uint32_t aResponseTimeout
)

ProtocolEngine

 ProtocolEngine(
  void
)

UnbindRequest

void UnbindRequest(
  const uint64_t & aPeerNodeId
)

要求復原繫結,並從繫結資料表中移除。

繫結處於「未繫結」狀態時目前依附於該筆交易的所有交易,也應一併移除。這個方法會自動完成所有使用此繫結的交易。

詳細資料
參數
[in] aPeerNodeId
64 位元節點 ID 或服務端點的參照,用來識別繫結。
另請參閱:
UnbindRequest(const uint64_t, WEAVE_ERROR)

UnbindRequest

void UnbindRequest(
  const uint64_t & aPeerNodeId,
  WEAVE_ERROR aErr
)

要求復原繫結,並從繫結資料表中移除。

繫結處於「未繫結」狀態時目前依附於該筆交易的所有交易,也應一併移除。這個方法會自動完成所有使用此繫結的交易。

詳細資料
參數
[in] aPeerNodeId
64 位元節點 ID 或服務端點的參照,用來識別繫結。
[in] aErr
如果沒有針對此解除繫結的要求沒有特定的原因,則 WEAVE_NO_ERROR,否則錯誤原因就會向下傳遞。
另請參閱:
UnbindRequest(const uint64_t)

~ProtocolEngine

virtual  ~ProtocolEngine(
  void
)

受保護的函式

清除

void Clear(
  void
)

ClearBindingTable

void ClearBindingTable(
  void
)

ClearTransactionTable

void ClearTransactionTable(
  void
)

DequeueTransaction

void DequeueTransaction(
  DMTransaction *aTransaction
)

EnqueueTransaction

WEAVE_ERROR EnqueueTransaction(
  DMTransaction *aTransaction,
  Binding *aBinding
)

EnqueueTransaction

WEAVE_ERROR EnqueueTransaction(
  DMTransaction *aTransaction
)

FailTransactions

bool FailTransactions(
  Binding *aBinding,
  StatusReport & aReport
)

完成

virtual void Finalize(
  void
)

FinalizeBindingTable

void FinalizeBindingTable(
  void
)

FinalizeTransactionTable

void FinalizeTransactionTable(
  void
)

FinalizeTransactions

void FinalizeTransactions(
  Binding *aBinding
)

FromExchangeCtx

Binding * FromExchangeCtx(
  ExchangeContext *aExchangeCtx
)

GetBinding

Binding * GetBinding(
  const uint64_t & aPeerNodeId
)

NewBinding

Binding * NewBinding(
  void
)

StartTransaction

WEAVE_ERROR StartTransaction(
  DMTransaction *aTransaction,
  Binding *aBinding
)

StartTransaction

WEAVE_ERROR StartTransaction(
  DMTransaction *aTransaction
)

StatusResponse

WEAVE_ERROR StatusResponse(
  ExchangeContext *aExchangeCtx,
  StatusReport & aStatus
)