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{
|
枚举 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
mServiceMgr
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr
指向用于完成此绑定的(可选)ServiceManager 对象的指针。
(只读)
绑定到 Weave 服务时,可以在初始化时提供 64 位服务端点 ID 来代替 Weave 节点 ID。在这种情况下,还需要 ServiceManager 对象才能完成绑定。普通的 TCP 或 WRMP 绑定不需要 ServiceManager 对象。
mState
uint8_t mState
Binding 对象状态。
只有一个“完成”操作可以同时运行,而且在任何情况下,如果您要求完成已完成的绑定,它只会立即调用确认函数。下面的状态变量可跟踪当前状态并充当锁定。
公共函数
CompleteConfirm
void CompleteConfirm( WeaveConnection *aConnection )
CompleteConfirm
void CompleteConfirm( StatusReport & aReport )
处理绑定请求失败。
详细信息 | |||
---|---|---|---|
参数 |
|
CompleteConfirm
void CompleteConfirm( void )
处理绑定请求的确认。
CompleteRequest
WEAVE_ERROR CompleteRequest( ProtocolEngine *aEngine )
请求完成绑定。
完成绑定(至少对于需要 TCP 的绑定)是针对提供对 ExchangeManager 实例的访问权限的特定 ProtocolEngine 对象执行的。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
||||||
返回值 |
否则,尝试连接时会返回任何 WEAVE_ERROR。
|
交流
WEAVE_ERROR Connect( WeaveConnection *aConnection )
通过提供完整的连接来完成 TCP 绑定。
新初始化的 TCP 绑定在完成之前无法使用。通常,这是在应用尝试使用绑定发送消息时按需执行的,但也可通过提供 Weave 连接来显式完成。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
完成
void Finalize( void )
“未完成”然后释放该绑定
绑定可能具有需要清理的状态,例如连接闭包,除了由 Free() 方法直接清除为初始状态的状态外,还由 Uncomplete() 方法处理。此方法主要是为了方便起见,会调用这两者。
另请参阅:完成(WEAVE_ERROR)
完成
void Finalize( WEAVE_ERROR aErr )
免费
void Free( void )
清除绑定状态。
无条件地将所有绑定状态恢复到原始状态。
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
通过 Binding 生成 ExchangeContext 对象。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向 ExchangeContext 对象的指针,如果失败,则为 NULL。
|
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
处理绑定失败。
此方法会在绑定完成后调用失败时调用,并进而调用更高级别的处理程序,即在调用 CompleteConfirm() 并带有指示成功的状态之后。
详细信息 | |||
---|---|---|---|
参数 |
|
CompleteConfirm(StatusReport &aReport)。
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
仅使用节点 ID 初始化 Binding。
这会导致与配置的默认传输绑定。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
根据对等 ID 和传输初始化 Binding 对象。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
Init
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
将 Binding 对象初始化到服务端点。
这就是绑定到 Nest 服务上的特定端点的方式。这种类型的绑定需要多阶段完成过程,其中可能包括填充或更新本地服务目录缓存。大多数情况下,此过程对应用中是隐藏的,但这意味着,此过程后期出现的错误可能会通过相关的“确认”按钮来传递回调,在原始请求使用(和完成)绑定后(有时会在之后很长时间)触发。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
Init
WEAVE_ERROR Init( WeaveConnection *aConnection )
使用 WeaveConnection 初始化 Binding 对象。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
IsComplete
bool IsComplete( void )
IsFree
bool IsFree( void )
检查是否绑定是免费的。
“免费”这里所说的只是“具有已定义的对等节点, ID”。IsFree() should be thought of as meaning "has had Free() 从它开始便未使用过”。
详细信息 | |
---|---|
返回值 |
如果绑定是自由的,则为 true,否则为 false。
|
UncompleteRequest
void UncompleteRequest( void )
导致绑定不完整。
从根本上讲,约束条件应处于“未完成”状态,状态,但更确切地说,就是绑定本身中未包含的任何相关状态,例如TCP 连接,也应该进行清理。应用可以考虑在发生错误时调用 UncompleteRequest()。
另请参阅:UncompleteRequest(WEAVE_ERROR )
UncompleteRequest
void UncompleteRequest( WEAVE_ERROR aErr )
导致绑定不完整。
从根本上讲,约束条件应处于“未完成”状态,状态,但更确切地说,就是绑定本身中未包含的任何相关状态,例如TCP 连接,也应该进行清理。应用可以考虑在发生错误时调用 UncompleteRequest()。
详细信息 | |||
---|---|---|---|
参数 |
|
UncompleteRequest(void)