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
对 StatusReport 对象的引用,其中详细说明了失败原因。
返回值

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
对 StatusReport 对象的引用,其中详细说明了失败原因。

IncompleteIndication

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

处理绑定不完整的指示。

较高层想要在绑定失败时收到通知,则应使用此方法,该方法仅随状态报告一起传递对等设备 ID。事实上,由于此方法虚拟无效,因此任何 DMClientDMPublisher 子类必须提供实现。

具体说明
参数
[in] aPeerNodeId
对作为失败绑定的目标的对等节点或服务端点的 64 位 ID 的引用。
[in] aReport
对 StatusReport 对象的引用,其中详细说明了失败原因。

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)

~协议引擎

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
)