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 )