nl::Weave::Profiles::DataManagement_Legacy::Binding

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

Binding 类使用 Weave 代表应用实体管理通信状态。

摘要

当应用想要使用 Weave 与远程实体通信时,有多种选项可供选择。Binding 类将这些选项关联在一起,并按以下方式排列这些选项:简单操作容易执行,复杂任务至少容易处理。涵盖的选项包括:

  • 与已知对等节点进行单播 UDP 通信。
  • 使用“any”进行 UDP 广播节点。
  • 与已知对等节点进行单播 WRMP 通信。
  • 与已知对等节点进行 TCP 通信。
  • 使用服务管理器实例与已知服务端点进行 TCP 通信,以便进行相关设置。
  • 基于预先建立的连接的 TCP 通信。

构造函数和析构函数

Binding(void)
Binding 对象的默认构造函数。
~Binding(void)
Binding 对象的析构函数。

公共类型

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
枚举
Binding 对象状态集。

公共属性

mAuthMode
WeaveAuthMode
要使用的 Weave 身份验证模式。
mConnection
指向此绑定中当前使用的 Weave 连接的指针。
mEngine
指向与此 Binding 相关的 ProtocolEngine 对象的指针。
mPeerNodeId
uint64_t
绑定目标的 64 位节点 ID。
mServiceMgr
指向用于完成此绑定的(可选)ServiceManager 对象的指针。
mState
uint8_t
Binding 对象状态。
mTransport
uint8_t
用于完成此 Binding 的传输。

公共函数

CompleteConfirm(WeaveConnection *aConnection)
void
处理绑定请求的确认。
CompleteConfirm(StatusReport & aReport)
void
处理绑定请求失败。
CompleteConfirm(void)
void
处理绑定请求的确认。
CompleteRequest(ProtocolEngine *aEngine)
请求完成绑定。
Connect(WeaveConnection *aConnection)
通过提供完整的连接来完成 TCP 绑定。
Finalize(void)
void
“未完成”然后释放该绑定
Finalize(WEAVE_ERROR aErr)
void
“未完成”然后释放该绑定
Free(void)
void
清除绑定状态。
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
通过 Binding 生成 ExchangeContext 对象。
IncompleteIndication(StatusReport & aReport)
void
处理绑定失败。
Init(const uint64_t & aPeerNodeId)
仅使用节点 ID 初始化 Binding
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
根据对等 ID 和传输初始化 Binding 对象。
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Binding 对象初始化到服务端点。
Init(WeaveConnection *aConnection)
使用 WeaveConnection 初始化 Binding 对象。
IsComplete(void)
bool
检查绑定是否已完成。
IsFree(void)
bool
检查是否绑定是免费的。
UncompleteRequest(void)
void
导致绑定不完整。
UncompleteRequest(WEAVE_ERROR aErr)
void
导致绑定不完整。

公共类型

@165

 @165

Binding 对象状态集。

属性
kState_Complete

Binding 的状态,已完成,可供使用。

kState_Completing

正在完成的 Binding 状态。

kState_Incomplete

Binding 的初始状态(也是最终状态)。

公共属性

mAuthMode

WeaveAuthMode mAuthMode

要使用的 Weave 身份验证模式。

(READ_ONLY)

这是受此绑定约束的所有通信中使用的身份验证模式。

mConnection

WeaveConnection * mConnection

指向此绑定中当前使用的 Weave 连接的指针。

(只读)

TCP 绑定可以立即通过连接进行初始化,也可以在完成时分配一个连接。

mEngine

ProtocolEngine * mEngine

指向与此 Binding 相关的 ProtocolEngine 对象的指针。

绑定通常与特定协议引擎相关,后者主要用作访问 MessageLayer 的一种方式。我们会对其进行跟踪。

mPeerNodeId

uint64_t mPeerNodeId

绑定目标的 64 位节点 ID。

(只读)

每个 Binding 都有一个目标实体,其名称如下所示。除了 Weave 节点 ID 之外,这还可指定服务端点。

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

指向用于完成此绑定的(可选)ServiceManager 对象的指针。

(只读)

绑定到 Weave 服务时,可以在初始化时提供 64 位服务端点 ID 来代替 Weave 节点 ID。在这种情况下,还需要 ServiceManager 对象才能完成绑定。普通的 TCP 或 WRMP 绑定不需要 ServiceManager 对象。

mState

uint8_t mState

Binding 对象状态。

只有一个“完成”操作可以同时运行,而且在任何情况下,如果您要求完成已完成的绑定,它只会立即调用确认函数。下面的状态变量可跟踪当前状态并充当锁定。

mTransport

uint8_t mTransport

用于完成此 Binding 的传输。

(只读)

mTransport 的可能值在 DMConstants.h 中定义。

公共函数

绑定

 Binding(
  void
)

Binding 对象的默认构造函数。

清除所有内部状态。

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

处理绑定请求的确认。

详细信息
参数
[in] aConnection
指向绑定目标的活跃 WeaveConnection 的指针。

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

处理绑定请求失败。

详细信息
参数
[in] aReport
对描述失败状态的 StatusReport 对象的引用。

CompleteConfirm

void CompleteConfirm(
  void
)

处理绑定请求的确认。

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

请求完成绑定。

完成绑定(至少对于需要 TCP 的绑定)是针对提供对 ExchangeManager 实例的访问权限的特定 ProtocolEngine 对象执行的。

详细信息
参数
[in] aEngine
指向要执行完成时所代表的 ProtocolEngine 对象的指针。
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
如果绑定已完成,则会发生此错误。
WEAVE_ERROR_NO_MEMORY
如果需要使用连接,但没有可用的连接
返回值
否则,尝试连接时会返回任何 WEAVE_ERROR

交流

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

通过提供完整的连接来完成 TCP 绑定。

新初始化的 TCP 绑定在完成之前无法使用。通常,这是在应用尝试使用绑定发送消息时按需执行的,但也可通过提供 Weave 连接来显式完成。

详细信息
参数
[in] aConnection
指向用于完成绑定的 WeaveConnection 的指针。
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INCORRECT_STATE
如果绑定已有连接。
WEAVE_ERROR_INVALID_ARGUMENT
如果连接为 NULL。

完成

void Finalize(
  void
)

“未完成”然后释放该绑定

绑定可能具有需要清理的状态,例如连接闭包,除了由 Free() 方法直接清除为初始状态的状态外,还由 Uncomplete() 方法处理。此方法主要是为了方便起见,会调用这两者。

另请参阅
完成(WEAVE_ERROR)

完成

void Finalize(
  WEAVE_ERROR aErr
)

“未完成”然后释放该绑定

绑定可能具有需要清理的状态,例如连接闭包,除了由 Free() 方法直接清除为初始状态的状态外,还由 Uncomplete() 方法处理。此方法主要是为了方便起见,会调用这两者。

详细信息
参数
[in] aErr
此错误代码指明了此请求的原因。如果不是 WEAVE_NO_ERROR,TCP 连接可能会被中止。
另请参阅
完成(void)

免费

void Free(
  void
)

清除绑定状态。

无条件地将所有绑定状态恢复到原始状态。

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

通过 Binding 生成 ExchangeContext 对象。

详细信息
参数
[in] aExchangeMgr
指向可从中请求上下文的广告交易平台管理器的指针。
[in] aAppState
指向应用状态对象的 void 指针,该对象将存储在 Exchange 上下文中以供日后使用。
返回值
指向 ExchangeContext 对象的指针,如果失败,则为 NULL。

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

处理绑定失败。

此方法会在绑定完成后调用失败时调用,并进而调用更高级别的处理程序,即在调用 CompleteConfirm() 并带有指示成功的状态之后。

详细信息
参数
[in] aReport
对 StatusReport 的引用,对问题进行描述。
另请参阅
CompleteConfirm(StatusReport &amp;aReport)

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

仅使用节点 ID 初始化 Binding

这会导致与配置的默认传输绑定。

详细信息
参数
[in] aPeerNodeId
对绑定目标的 64 位 ID 的引用。
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INVALID_ARGUMENT
如果绑定指定不足。

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

根据对等 ID 和传输初始化 Binding 对象。

详细信息
参数
[in] aPeerNodeId
对绑定目标的 64 位节点标识符的引用。
[in] aTransport
来自 WeaveTransportOption 的传输规范。
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INVALID_ARGUMENT
如果绑定指定不足。

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Binding 对象初始化到服务端点。

这就是绑定到 Nest 服务上的特定端点的方式。这种类型的绑定需要多阶段完成过程,其中可能包括填充或更新本地服务目录缓存。大多数情况下,此过程对应用中是隐藏的,但这意味着,此过程后期出现的错误可能会通过相关的“确认”按钮来传递回调,在原始请求使用(和完成)绑定后(有时会在之后很长时间)触发。

详细信息
参数
[in] aServiceEpt
对相关 Weave Service 端点的 64 位标识符的引用。
[in] aServiceMgr
指向服务管理器实例的指针,用于在查找服务层级并连接到该实例。
[in] aAuthMode
要在连接中使用的身份验证模式。
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INVALID_ARGUMENT
如果绑定指定不足。

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

使用 WeaveConnection 初始化 Binding 对象。

详细信息
参数
[in] aConnection
指向用作绑定基础的 WeaveConnection 的指针。
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_INVALID_ARGUMENT
如果绑定指定不足。

IsComplete

bool IsComplete(
  void
)

检查绑定是否已完成。

详细信息
返回值
如果完整,则为 true,否则为 false。
另请参阅
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

检查是否绑定是免费的。

“免费”这里所说的只是“具有已定义的对等节点, ID”。IsFree() should be thought of as meaning &quot;has had Free() 从它开始便未使用过”。

详细信息
返回值
如果绑定是自由的,则为 true,否则为 false。

UncompleteRequest

void UncompleteRequest(
  void
)

导致绑定不完整。

从根本上讲,约束条件应处于“未完成”状态,状态,但更确切地说,就是绑定本身中未包含的任何相关状态,例如TCP 连接,也应该进行清理。应用可以考虑在发生错误时调用 UncompleteRequest()

另请参阅
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

导致绑定不完整。

从根本上讲,约束条件应处于“未完成”状态,状态,但更确切地说,就是绑定本身中未包含的任何相关状态,例如TCP 连接,也应该进行清理。应用可以考虑在发生错误时调用 UncompleteRequest()

详细信息
参数
[in] aErr
如果不是 WEAVE_NO_ERROR,现有连接(如果有)将被取消,而不是正常关闭。
另请参阅
UncompleteRequest(void)

~绑定

virtual  ~Binding(
  void
)

Binding 对象的析构函数。

清除所有内部状态,并在必要时关闭打开的连接。