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)
|
Binding *
|
GetBinding(const uint64_t & aPeerNodeId)
|
Binding *
|
NewBinding(void)
|
Binding *
|
StartTransaction(DMTransaction *aTransaction, Binding *aBinding)
|
|
StartTransaction(DMTransaction *aTransaction)
|
|
StatusResponse(ExchangeContext *aExchangeCtx, StatusReport & aStatus)
|
類別 |
|
---|---|
nl:: |
受保護的屬性
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 )
處理繫結要求已成功完成的確認。
繫結完成後,通訊協定引擎就會瀏覽交易表,並開始與該繫結相關的交易。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回 |
WEAVE_NO_ERROR 即成功。否則,系統會傳回無法啟動交易的 WEAVE_ERROR。
|
BindConfirm
virtual WEAVE_ERROR BindConfirm( Binding *aBinding, StatusReport & aReport )
處理繫結要求失敗的確認。
當繫結要求失敗時,通訊協定引擎必須瀏覽交易表,並根據繫結失敗任何交易。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
BindRequest
WEAVE_ERROR BindRequest( const uint64_t & aPeerNodeId, uint8_t aTransport )
使用已知的對等節點 ID 和傳輸指定碼要求繫結。
此要求具有對等互連節點 ID 和傳輸規格,會為該對等點設定繫結。只有在傳輸為 TCP 時,出價才會需要額外完成。如果對等點繫結已存在,則會重複使用。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
WeaveTransportOption
BindRequest
WEAVE_ERROR BindRequest( const uint64_t & aPeerNodeId )
使用預設傳輸功能繫結至已知的對等互連。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回 |
WEAVE_NO_ERROR 即成功。否則,會傳回 WEAVE_ERROR 表示繫結作業失敗。
|
BindRequest
WEAVE_ERROR BindRequest( nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
BindRequest
WEAVE_ERROR BindRequest( WeaveConnection *aConnection )
使用有效的 Weave 連線要求繫結。
您也可以使用現有的、開放的連線來建立繫結。請注意,以這種方式建立的繫結無需額外完成。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回 |
成功時傳回 WEAVE_NO_ERROR,如果繫結資料表已滿,則傳回 WEAVE_ERROR_NO_MEMORY。否則,系統會傳回錯誤,指出無法初始化繫結。
|
IncompleteIndication
virtual void IncompleteIndication( Binding *aBinding, StatusReport & aReport )
處理繫結失敗的跡象。
繫結變成未完成時 (即 TCP 繫結關閉連線),通訊協定引擎必須導致所有依附於該繫結的交易失敗,包括呼叫其狀態處理常式。此外,不完整的指標也會傳遞至接受此方法的替代形式的任何父類別物件,而該方法會採用對等點 ID。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
IncompleteIndication
virtual void IncompleteIndication( const uint64_t & aPeerNodeId, StatusReport & aReport )=0
處理繫結變成不完整的跡象。
如果較高圖層要收到繫結失敗通知,請使用此方法,也就是將對等互連 ID 與狀態報告一併傳遞。事實上,由於這個方法是虛擬無效,因此所有 DMClient 或 DMPublisher 子類別都必須提供實作方式。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
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 )
要求復原繫結,並從繫結資料表中移除。
繫結處於「未繫結」狀態時目前依附於該筆交易的所有交易,也應一併移除。這個方法會自動完成所有使用此繫結的交易。
詳細資料 | |||
---|---|---|---|
參數 |
|
UnbindRequest(const uint64_t, WEAVE_ERROR)
UnbindRequest
void UnbindRequest( const uint64_t & aPeerNodeId, WEAVE_ERROR aErr )
要求復原繫結,並從繫結資料表中移除。
繫結處於「未繫結」狀態時目前依附於該筆交易的所有交易,也應一併移除。這個方法會自動完成所有使用此繫結的交易。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
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 )