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 )