nl:: Weave:: WeaveConnection
#include <src/lib/core/WeaveMessageLayer.h>
Weave Connection 类的定义。
摘要
它表示与另一个 Weave 节点的 TCP 或 BLE 连接。
公共类型 |
|
---|---|
@58{
|
枚举 |
ConnectionClosedFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
|
typedefvoid(*
此函数是在连接关闭时调用的应用回调函数。 |
ConnectionCompleteFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
|
typedefvoid(*
此函数是在连接设置完成时调用的应用回调函数。 |
MessageReceiveFunct)(WeaveConnection *con, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
typedefvoid(*
此函数是通过 Weave 连接接收消息时调用的应用回调函数。 |
NetworkType{
|
枚举 Weave 连接对象的网络类型。 |
ReceiveErrorFunct)(WeaveConnection *con, WEAVE_ERROR err)
|
typedefvoid(*
此函数是在接收 Weave 消息时遇到错误时调用的应用回调。 |
State{
|
枚举 Weave 连接对象的状态。 |
TunneledMsgReceiveFunct)(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
typedefvoid(*
此函数是在通过 Weave 连接收到隧道数据包时调用的应用回调函数。 |
公共属性 |
|
---|---|
AppState
|
void *
指向应用特定状态对象的指针。
|
AuthMode
|
WeaveAuthMode
[只读] 用于为连接建立默认加密密钥的身份验证模式。
|
DefaultEncryptionType
|
uint8_t
邮件的默认加密类型。
|
DefaultKeyId
|
uint16_t
发送邮件时使用的默认加密密钥。
|
MessageLayer
|
[只读] 关联的 WeaveMessageLayer 对象。
|
NetworkType
|
uint8_t
[只读] 关联端点的网络类型。
|
OnConnectionClosed
|
|
OnConnectionComplete
|
|
OnMessageReceived
|
|
OnReceiveError
|
|
OnTunneledMessageReceived
|
|
PeerAddr
|
IPAddress
[只读] 对等节点的 IP 地址。
|
PeerNodeId
|
uint64_t
[只读] 对等方的节点标识符。
|
PeerPort
|
uint16_t
[只读] 对等节点的端口号。
|
ReceiveEnabled
|
bool
[只读] 如果已启用接收,则为 true,否则为 false。
|
SendDestNodeId
|
bool
如果通过此连接发送的所有消息都必须包含明确编码的目标节点标识符,则为 true,否则为 false。
|
SendSourceNodeId
|
bool
如果通过此连接发送的所有消息都必须包含显式编码的源节点标识符,则为 true,否则为 false。
|
State
|
uint8_t
[只读] WeaveConnection 对象的状态。
|
公共函数 |
|
---|---|
Abort(void)
|
void
对基于 TCP 或 BLE 的 WeaveConnection 执行非正常关闭,丢弃任何可能进出对等方的数据。
|
AddRef(void)
|
void
预留对 WeaveConnection 对象的引用。
|
Close(void)
|
对基于 TCP 或 BLE 的 WeaveConnection 执行非阻塞安全关闭,先传送任何剩余的传出数据,然后再礼貌地通知远程主机我们已重置连接。
|
Close(bool suppressCloseLog)
|
对基于 TCP 或 BLE 的 WeaveConnection 执行非阻塞安全关闭,先传送任何剩余的传出数据,然后再礼貌地通知远程主机我们已重置连接。
|
Connect(uint64_t peerNodeId)
|
使用派生自指定节点标识符的结构 IP 地址连接到 Weave 节点。
|
Connect(uint64_t peerNodeId, const IPAddress & peerAddr, uint16_t peerPort)
|
使用节点标识符和/或 IP 地址连接到 Weave 节点。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const IPAddress & peerAddr, uint16_t peerPort, InterfaceId intf)
|
使用节点标识符和/或特定接口上的 IP 地址连接到 Weave 节点。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t defaultPort)
|
使用节点标识符和/或字符串主机名连接到 Weave 节点。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint16_t defaultPort)
|
使用节点标识符和/或字符串对等地址连接到 Weave 节点。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint8_t dnsOptions, uint16_t defaultPort)
|
使用节点标识符和/或字符串对等地址连接到 Weave 节点。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, InterfaceId intf)
|
使用节点标识符和/或主机名和端口列表连接到 Weave 节点。
|
Connect(uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, uint8_t dnsOptions, InterfaceId intf)
|
使用节点标识符和/或主机名和端口列表连接到 Weave 节点。
|
DisableKeepAlive(void)
|
|
DisableReceive(void)
|
void
禁止通过此 WeaveConnection 接收消息。
|
EnableKeepAlive(uint16_t interval, uint16_t timeoutCount)
|
|
EnableReceive(void)
|
void
允许通过此 WeaveConnection 接收内容。
|
GetPeerAddressInfo(IPPacketInfo & addrInfo)
|
获取对等方的 IP 地址信息。
|
GetPeerDescription(char *buf, size_t bufSize) const
|
void
构造一个描述与连接关联的对等节点的字符串。
|
GetTCPEndPoint(void) const
|
TCPEndPoint *
|
IsIncoming(void) const
|
bool
|
LogId(void) const
|
uint16_t
|
Release(void)
|
void
减少 WeaveConnection 对象上的引用计数。
|
ResetUserTimeout(void)
|
|
SendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
通过已建立的连接发送 Weave 消息。
|
SendTunneledMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
通过 Weave 连接发送隧道数据包的函数。
|
SetConnectTimeout(const uint32_t connTimeoutMsecs)
|
void
设置超时,以便连接成功或返回错误。
|
SetIdleTimeout(uint32_t timeoutMS)
|
为底层网络层连接设置空闲超时。
|
SetIncoming(bool val)
|
void
|
SetUserTimeout(uint32_t userTimeoutMillis)
|
|
Shutdown(void)
|
执行 TCP 安全发送关闭,确保对等方的 TCP 栈发送和接收所有传出数据。
|
公共类型
ConnectionClosedFunct
void(* ConnectionClosedFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
ConnectionCompleteFunct
void(* ConnectionCompleteFunct)(WeaveConnection *con, WEAVE_ERROR conErr)
此函数是在连接设置完成时调用的应用回调函数。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
MessageReceiveFunct
void(* MessageReceiveFunct)(WeaveConnection *con, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
此函数是通过 Weave 连接接收消息时调用的应用回调函数。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
NetworkType
NetworkType
Weave 连接对象的网络类型。
属性 | |
---|---|
kNetworkType_BLE
|
BLE 网络类型。 |
kNetworkType_IP
|
TCP/IP 网络类型。 |
kNetworkType_Unassigned
|
未指定的网络类型。 |
ReceiveErrorFunct
void(* ReceiveErrorFunct)(WeaveConnection *con, WEAVE_ERROR err)
此函数是在接收 Weave 消息时遇到错误时调用的应用回调。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
状态
State
Weave 连接对象的状态。
属性 | |
---|---|
kState_Closed
|
连接关闭时的状态。 |
kState_Connected
|
建立连接后的状态。 |
kState_Connecting
|
尝试连接时的状态。 |
kState_EstablishingSession
|
在建立安全会话时的状态。 |
kState_ReadyToConnect
|
Weave 连接初始化后的状态。 |
kState_Resolving
|
执行 DNS 名称解析时的状态。 |
kState_SendShutdown
|
连接关闭时的状态。 |
TunneledMsgReceiveFunct
void(* TunneledMsgReceiveFunct)(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
此函数是在通过 Weave 连接收到隧道数据包时调用的应用回调函数。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
公共属性
AppState
void * AppState
指向应用特定状态对象的指针。
AuthMode
WeaveAuthMode AuthMode
[只读] 用于为连接建立默认加密密钥的身份验证模式。
DefaultEncryptionType
uint8_t DefaultEncryptionType
邮件的默认加密类型。
DefaultKeyId
uint16_t DefaultKeyId
发送邮件时使用的默认加密密钥。
NetworkType
uint8_t NetworkType
[只读] 关联端点的网络类型。
OnConnectionClosed
ConnectionClosedFunct OnConnectionClosed
OnConnectionComplete
ConnectionCompleteFunct OnConnectionComplete
OnMessageReceived
MessageReceiveFunct OnMessageReceived
OnReceiveError
ReceiveErrorFunct OnReceiveError
OnTunneledMessageReceived
TunneledMsgReceiveFunct OnTunneledMessageReceived
PeerAddr
IPAddress PeerAddr
[只读] 对等节点的 IP 地址。
PeerNodeId
uint64_t PeerNodeId
[只读] 对等方的节点标识符。
PeerPort
uint16_t PeerPort
[只读] 对等节点的端口号。
ReceiveEnabled
bool ReceiveEnabled
[只读] 如果已启用接收,则为 true,否则为 false。
SendDestNodeId
bool SendDestNodeId
如果通过此连接发送的所有消息都必须包含明确编码的目标节点标识符,则为 true,否则为 false。
SendSourceNodeId
bool SendSourceNodeId
如果通过此连接发送的所有消息都必须包含显式编码的源节点标识符,则为 true,否则为 false。
公共函数
取消
void Abort( void )
对基于 TCP 或 BLE 的 WeaveConnection 执行非正常关闭,丢弃任何可能进出对等方的数据。
调用 Abort() 会立即终止底层连接。在此之后,WeaveConnection 对象将无法再用于进一步的通信。
无论在调用该方法时连接是否处于打开/活跃状态,调用 Abort() 都会减少与 WeaveConnection 对象相关联的引用计数。如果这会导致引用计数为零,则会释放与连接对象关联的资源。在这种情况下,应用不得与该对象进行进一步的交互。
另请参阅:Shutdown()、Abort()、AddRef() 和 Release()。
AddRef
void AddRef( void )
预留对 WeaveConnection 对象的引用。
AddRef() 方法会递增与 WeaveConnection 对象关联的引用计数。对于 AddRef() 的每次调用,应用负责进行相应的 Release()、Close() 或 Abort() 调用。
关闭
WEAVE_ERROR Close( void )
对基于 TCP 或 BLE 的 WeaveConnection 执行非阻塞安全关闭,先传送任何剩余的传出数据,然后再礼貌地通知远程主机我们已重置连接。
此方法不能保证任何未在应用协议级别确认的外发消息都已被远程对等方收到。对于 TCP 和 BLE,底层协议堆栈都会尽可能先传送所有待处理的传出数据,然后再重置连接。对于 TCP,如果在关闭连接之前需要确认传输层消息接收情况,则应在 Close() 之前使用 Shutdown()。BLE 连接不提供等效的 Shutdown()。
对于基于 BLE 的连接,Close() 会关闭 WeaveConnection 并立即返回,但可能会导致底层 BLEEndPoint 对象停留下来,直到所有传出数据发送完毕。这是 Weave BleLayer 中现有的 Weave over BLE 传输协议实现的副作用。
Close() 被调用后,WeaveConnection 对象无法再用于进一步的通信。
调用 Close() 会减少与 WeaveConnection 对象相关联的引用计数,无论在调用该方法时连接是否处于打开/活跃状态。如果这会导致引用计数为零,则会释放与连接对象关联的资源。在这种情况下,应用不得与该对象进行进一步的交互。
具体说明 | |
---|---|
返回值 |
WEAVE_NO_ERROR 为无条件错误。
|
Shutdown()、Abort()、AddRef() 和 Release()。
关闭
WEAVE_ERROR Close( bool suppressCloseLog )
对基于 TCP 或 BLE 的 WeaveConnection 执行非阻塞安全关闭,先传送任何剩余的传出数据,然后再礼貌地通知远程主机我们已重置连接。
此方法不能保证任何未在应用协议级别确认的外发消息都已被远程对等方收到。对于 TCP 和 BLE,底层协议堆栈都会尽可能先传送所有待处理的传出数据,然后再重置连接。对于 TCP,如果在关闭连接之前需要确认传输层消息接收情况,则应在 Close() 之前使用 Shutdown()。BLE 连接不提供等效的 Shutdown()。
对于基于 BLE 的连接,Close() 会关闭 WeaveConnection 并立即返回,但可能会导致底层 BLEEndPoint 对象停留下来,直到所有传出数据发送完毕。这是 Weave BleLayer 中现有的 Weave over BLE 传输协议实现的副作用。
Close() 被调用后,WeaveConnection 对象无法再用于进一步的通信。
调用 Close() 会减少与 WeaveConnection 对象相关联的引用计数,无论在调用该方法时连接是否处于打开/活跃状态。如果这会导致引用计数为零,则会释放与连接对象关联的资源。在这种情况下,应用不得与该对象进行进一步的交互。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
WEAVE_NO_ERROR 为无条件错误。
|
Shutdown()、Abort()、AddRef() 和 Release()。
连接
WEAVE_ERROR Connect( uint64_t peerNodeId )
使用派生自指定节点标识符的结构 IP 地址连接到 Weave 节点。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
连接
WEAVE_ERROR Connect( uint64_t peerNodeId, const IPAddress & peerAddr, uint16_t peerPort )
使用节点标识符和/或 IP 地址连接到 Weave 节点。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
连接
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const IPAddress & peerAddr, uint16_t peerPort, InterfaceId intf )
使用节点标识符和/或特定接口上的 IP 地址连接到 Weave 节点。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
连接
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t defaultPort )
使用节点标识符和/或字符串主机名连接到 Weave 节点。
如果提供,PeerAddr 可以是以下任何一项:
: : [ ]:
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
连接
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint16_t defaultPort )
使用节点标识符和/或字符串对等地址连接到 Weave 节点。
如果提供,PeerAddr 可以是以下任何一项:
: : [ ]:
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
连接
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, const char *peerAddr, uint16_t peerAddrLen, uint8_t dnsOptions, uint16_t defaultPort )
使用节点标识符和/或字符串对等地址连接到 Weave 节点。
如果提供,PeerAddr 可以是以下任何一项:
: : [ ]:
具体说明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||
返回值 |
|
连接
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, InterfaceId intf )
使用节点标识符和/或主机名和端口列表连接到 Weave 节点。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
连接
WEAVE_ERROR Connect( uint64_t peerNodeId, WeaveAuthMode authMode, HostPortList hostPortList, uint8_t dnsOptions, InterfaceId intf )
使用节点标识符和/或主机名和端口列表连接到 Weave 节点。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
DisableKeepAlive
WEAVE_ERROR DisableKeepAlive( void )
WeaveConnection::DisableKeepAlive。
对底层 TCP 连接停用 TCP keepalive 探测。
注意:此方法只能针对由 TCP 连接支持的 Weave 连接调用。仅当连接处于允许发送的状态时,才能调用此方法。
如果连接上未启用 keepalive,则此方法不会执行任何操作。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
返回值 |
|
DisableReceive
void DisableReceive( void )
禁止通过此 WeaveConnection 接收消息。
应用使用此方法表明它尚未准备好接收任何通过 TCP 连接到达的数据。为了重新启用接收功能,应用需要调用 EnableReceive() 以允许 WeaveConnection 调用适当的回调来传递任何接收到的数据。
另请参阅:EnableReceive()
EnableKeepAlive
WEAVE_ERROR EnableKeepAlive( uint16_t interval, uint16_t timeoutCount )
WeaveConnection::EnableKeepAlive。
对底层 TCP 连接启用 TCP keepalive 探测。
注意:此方法只能针对由 TCP 连接支持的 Weave 连接调用。- 仅当连接处于允许发送的状态时,才能调用此方法。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
- 可以多次调用此方法来调整 keepalive 间隔或超时计数。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
返回值 |
|
EnableReceive
void EnableReceive( void )
允许通过此 WeaveConnection 接收内容。
应用使用此方法向 WeaveConnection 对象表明,它已准备好接收通过 TCP 连接到达的任何数据。
另请参阅:DisableReceive()
GetPeerAddressInfo
WEAVE_ERROR GetPeerAddressInfo( IPPacketInfo & addrInfo )
获取对等方的 IP 地址信息。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
GetPeerDescription
void GetPeerDescription( char *buf, size_t bufSize ) const
构造一个描述与连接关联的对等节点的字符串。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
GetTCPEndPoint
TCPEndPoint * GetTCPEndPoint( void ) const
IsIncoming
bool IsIncoming( void ) const
LogId
uint16_t LogId( void ) const
版本
void Release( void )
减少 WeaveConnection 对象上的引用计数。
Release() 方法会减少与 WeaveConnection 对象相关联的引用计数。如果这会导致引用计数为零,则会关闭连接并释放连接对象。在这种情况下,应用不得与该对象进行进一步的交互。
ResetUserTimeout
WEAVE_ERROR ResetUserTimeout( void )
WeaveConnection::ResetUserTimeout。
将 TCP 用户超时套接字选项重置为系统默认值。
注意:此方法只能针对由 TCP 连接支持的 Weave 连接调用。- 仅当连接处于允许发送的状态时,才能调用此方法。
- 如果连接上未设置用户超时,此方法不会执行任何操作。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
返回值 |
|
SendMessage
WEAVE_ERROR SendMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
通过已建立的连接发送 Weave 消息。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
SendTunneledMessage
WEAVE_ERROR SendTunneledMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
通过 Weave 连接发送隧道数据包的函数。
通过已建立的连接发送隧道式 Weave 消息。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
SetConnectTimeout
void SetConnectTimeout( const uint32_t connTimeoutMsecs )
设置超时,以便连接成功或返回错误。
具体说明 | |||
---|---|---|---|
参数 |
|
SetIdleTimeout
WEAVE_ERROR SetIdleTimeout( uint32_t timeoutMS )
为底层网络层连接设置空闲超时。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
SetIncoming
void SetIncoming( bool val )
SetUserTimeout
WEAVE_ERROR SetUserTimeout( uint32_t userTimeoutMillis )
WeaveConnection::SetUserTimeout。
设置 TCP 用户超时套接字选项。
当该值大于 0 时,它指定了在 TCP 强制关闭相应连接之前传输数据可以保持未确认状态的最长时间(以毫秒为单位)。如果该选项的值被指定为 0,则 TCP 将使用系统默认值。如需了解详情,请参阅 RFC 5482。
具体说明 | |||
---|---|---|---|
参数 |
|
注意:此方法只能针对由 TCP 连接支持的 Weave 连接调用。- 仅当连接处于允许发送的状态时,才能调用此方法。
- 您可以多次调用此方法来调整 TCP 用户超时。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
返回值 |
|
关停
WEAVE_ERROR Shutdown( void )
执行 TCP 安全发送关闭,确保对等方的 TCP 栈发送和接收所有传出数据。
对于大多数(但不是全部)TCP 实现而言,收到发送关闭事件会导致远程主机也关闭自己那一端的连接,进而导致连接关闭。后续调用 Close() 会终止 WeaveConnection。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
返回值 |
|
Close() 和 Abort()。