nl::Weave::WeaveConnection

#include <src/lib/core/WeaveMessageLayer.h>

Weave Connection 类的定义。

摘要

它表示与另一个 Weave 节点的 TCP 或 BLE 连接。

公共类型

@58{
  kGetPeerDescription_MaxLength = nl::Weave::kWeavePeerDescription_MaxLength
}
枚举
ConnectionClosedFunct)(WeaveConnection *con, WEAVE_ERROR conErr) typedef
void(*
此函数是在连接关闭时调用的应用回调。
ConnectionCompleteFunct)(WeaveConnection *con, WEAVE_ERROR conErr) typedef
void(*
此函数就是在连接设置完成时调用的应用回调函数。
MessageReceiveFunct)(WeaveConnection *con, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf) typedef
void(*
此函数是通过 Weave 连接接收消息时调用的应用回调函数。
NetworkType{
  kNetworkType_Unassigned = 0,
  kNetworkType_IP = 1,
  kNetworkType_BLE = 2
}
枚举
Weave 连接对象的网络类型。
ReceiveErrorFunct)(WeaveConnection *con, WEAVE_ERROR err) typedef
void(*
此函数是在收到 Weave 消息时遇到错误时调用的应用回调。
State{
  kState_ReadyToConnect = 0,
  kState_Resolving = 1,
  kState_Connecting = 2,
  kState_EstablishingSession = 3,
  kState_Connected = 4,
  kState_SendShutdown = 5,
  kState_Closed = 6
}
枚举
Weave 连接对象的状态。
TunneledMsgReceiveFunct)(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf) typedef
void(*
此函数是通过 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
[READ ONLY] 如果启用了接收功能,则为 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 堆栈发送和接收。

公共类型

58 岁

 @58
属性
kGetPeerDescription_MaxLength

GetPeerDescription() 返回的字符串(包括 NUL 字符)的最大长度。

ConnectionClosedFunct

void(* ConnectionClosedFunct)(WeaveConnection *con, WEAVE_ERROR conErr)

此函数是在连接关闭时调用的应用回调。

详细信息
参数
[in] con
指向 WeaveConnection 对象的指针。
[in] conErr
连接关闭时遇到 WEAVE_ERROR。

ConnectionCompleteFunct

void(* ConnectionCompleteFunct)(WeaveConnection *con, WEAVE_ERROR conErr)

此函数就是在连接设置完成时调用的应用回调函数。

详细信息
参数
[in] con
指向 WeaveConnection 对象的指针。
[in] conErr
连接设置期间遇到 WEAVE_ERROR。

MessageReceiveFunct

void(* MessageReceiveFunct)(WeaveConnection *con, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)

此函数是通过 Weave 连接接收消息时调用的应用回调函数。

详细信息
参数
[in] con
指向 WeaveConnection 对象的指针。
[in] msgInfo
指向包含消息相关信息的 WeaveMessageInfo 结构体的指针。
[in] msgBuf
指向包含消息的 PacketBuffer 对象的指针。

NetworkType

 NetworkType

Weave 连接对象的网络类型。

属性
kNetworkType_BLE

BLE 网络类型。

kNetworkType_IP

TCP/IP 网络类型。

kNetworkType_Unassigned

未分配的网络类型。

ReceiveErrorFunct

void(* ReceiveErrorFunct)(WeaveConnection *con, WEAVE_ERROR err)

此函数是在收到 Weave 消息时遇到错误时调用的应用回调。

详细信息
参数
[in] con
指向 WeaveConnection 对象的指针。
[in] err
通过连接接收数据时遇到 WEAVE_ERROR。

 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 连接收到通道数据包后调用的应用回调。

详细信息
参数
[in] con
指向 WeaveConnection 对象的指针。
[in] msgInfo
指向 WeaveMessageInfo 对象的指针。
[in] msgBuf
指向包含所接收隧道式数据包的 PacketBuffer 对象的指针。

公共属性

AppState

void * AppState

指向特定于应用的状态对象的指针。

AuthMode

WeaveAuthMode AuthMode

[只读] 用于为连接建立默认加密密钥的身份验证模式。

DefaultEncryptionType

uint8_t DefaultEncryptionType

邮件的默认加密类型。

DefaultKeyId

uint16_t DefaultKeyId

发送消息时使用的默认加密密钥。

MessageLayer

WeaveMessageLayer * MessageLayer

[只读] 关联的 WeaveMessageLayer 对象。

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

[READ ONLY] 如果启用了接收功能,则为 true,否则为 false。

SendDestNodeId

bool SendDestNodeId

如果通过此连接发送的所有邮件都必须包含显式编码的目标节点标识符,则为 true,否则为 false。

SendSourceNodeId

bool SendSourceNodeId

如果通过此连接发送的所有消息都必须包含显式编码的源节点标识符,则为 true,否则为 false。

uint8_t State

[只读] WeaveConnection 对象的状态。

公共函数

中止

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 对象相关的引用计数,无论调用方法时连接是否处于打开/活跃状态。如果这会导致引用计数为零,则释放与连接对象关联的资源。发生这种情况时,应用不得与对象进一步交互。

详细信息
返回值
另请参阅
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 对象相关的引用计数,无论调用方法时连接是否处于打开/活跃状态。如果这会导致引用计数为零,则释放与连接对象关联的资源。发生这种情况时,应用不得与对象进一步交互。

详细信息
参数
[in] suppressCloseLog
如果需要禁止日志,则为 true,否则为 false。
返回值
另请参阅
Shutdown()Abort()AddRef()Release()

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId
)

使用派生自指定节点标识符的结构 IP 地址连接到 Weave 节点。

详细信息
参数
[in] peerNodeId
对等体的节点标识符。
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点 ID 推导出目标地址,则返回 。
other
TCPEndPoint 连接操作产生的互联网层错误。

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId,
  const IPAddress & peerAddr,
  uint16_t peerPort
)

使用节点标识符和/或 IP 地址连接到 Weave 节点。

详细信息
参数
[in] peerNodeId
对等体的节点标识符,kNodeIdNotSpecified,如果未知,则为 0。
[in] peerAddr
对等方的 IP 地址;如果未知,则为 IPAddress::Any
[in] peerPort
对等体的可选端口,默认为 WEAVE_PORT
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点 ID 推导出目标地址,则返回 。
other
TCPEndPoint 连接操作产生的互联网层错误。

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId,
  WeaveAuthMode authMode,
  const IPAddress & peerAddr,
  uint16_t peerPort,
  InterfaceId intf
)

使用特定接口上的节点标识符和/或 IP 地址连接到 Weave 节点。

详细信息
参数
[in] peerNodeId
对等体的节点标识符,kNodeIdNotSpecified,如果未知,则为 0。
[in] authMode
对等体所需的身份验证模式。仅支持 CASE、PASE 和 Unauthenticated 模式。
[in] peerAddr
对等方的 IP 地址;如果未知,则为 IPAddress::Any
[in] peerPort
对等体的可选端口,默认为 WEAVE_PORT
[in] intf
用于连接到对等节点的可选接口,默认值为 INET_NULL_INTERFACEID
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点标识符推断出目标地址。
other
TCPEndPoint 连接操作产生的互联网层错误。

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId,
  WeaveAuthMode authMode,
  const char *peerAddr,
  uint16_t defaultPort
)

使用节点标识符和/或字符串主机名连接到 Weave 节点。

如果提供了相应信息,peerAddr 可以是以下任何一项:


:

:

[]:

详细信息
参数
[in] peerNodeId
对等体的节点标识符,kNodeIdNotSpecified,如果未知,则为 0。
[in] authMode
对等体所需的身份验证模式。仅支持 CASE、PASE 和 Unauthenticated 模式。
[in] peerAddr
对等体的地址或主机名,以 NULL 结尾的 C 字符串。
[in] defaultPort
如果没有在 partnerAddr 字符串中提供该端口,则为连接使用的可选默认端口。
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点 ID 推导出目标地址,则返回 。
other
TCPEndPoint 连接操作产生的互联网层错误。

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId,
  WeaveAuthMode authMode,
  const char *peerAddr,
  uint16_t peerAddrLen,
  uint16_t defaultPort
)

使用节点标识符和/或字符串对等地址连接到 Weave 节点。

如果提供了相应信息,peerAddr 可以是以下任何一项:


:

:

[]:

详细信息
参数
[in] peerNodeId
对等体的节点标识符,kNodeIdNotSpecified,如果未知,则为 0。
[in] authMode
对等体所需的身份验证模式。仅支持 CASE、PASE 和 Unauthenticated 模式。
[in] peerAddr
对等体的地址或主机名,以非 NULL 结尾的 C 字符串。
[in] peerAddrLen
PeerAddr 字符串的长度。
[in] defaultPort
如果没有在 partnerAddr 字符串中提供该端口,则为连接使用的可选默认端口。
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点 ID 推导出目标地址,则返回 。
other
TCPEndPoint 连接操作产生的互联网层错误。

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId,
  WeaveAuthMode authMode,
  const char *peerAddr,
  uint16_t peerAddrLen,
  uint8_t dnsOptions,
  uint16_t defaultPort
)

使用节点标识符和/或字符串对等地址连接到 Weave 节点。

如果提供了相应信息,peerAddr 可以是以下任何一项:


:

:

[]:

详细信息
参数
[in] peerNodeId
对等体的节点标识符,kNodeIdNotSpecified,如果未知,则为 0。
[in] authMode
对等体所需的身份验证模式。仅支持 CASE、PASE 和 Unauthenticated 模式。
[in] peerAddr
对等体的地址或主机名,以非 NULL 结尾的 C 字符串。
[in] peerAddrLen
PeerAddr 字符串的长度。
[in] dnsOptions
一个整数值,用于控制如何执行主机名解析。值应该是 #::nl::Inet::DNSOptions 枚举中的一个或多个值的 OR 值。
[in] defaultPort
如果没有在 partnerAddr 字符串中提供该端口,则为连接使用的可选默认端口。
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点 ID 推导出目标地址,则返回 。
other
TCPEndPoint 连接操作产生的互联网层错误。

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId,
  WeaveAuthMode authMode,
  HostPortList hostPortList,
  InterfaceId intf
)

使用节点标识符和/或主机名和端口列表连接到 Weave 节点。

详细信息
参数
[in] peerNodeId
对等体的节点标识符。
[in] authMode
用于连接的身份验证模式。
[in] hostPortList
主机名和端口列表。
[in] intf
用于连接到对等节点的可选接口,默认值为 INET_NULL_INTERFACEID
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点 ID 推导出目标地址,则返回 。
other
TCPEndPoint 连接操作产生的互联网层错误。

交流

WEAVE_ERROR Connect(
  uint64_t peerNodeId,
  WeaveAuthMode authMode,
  HostPortList hostPortList,
  uint8_t dnsOptions,
  InterfaceId intf
)

使用节点标识符和/或主机名和端口列表连接到 Weave 节点。

详细信息
参数
[in] peerNodeId
对等体的节点标识符。
[in] authMode
用于连接的身份验证模式。
[in] hostPortList
主机名和端口列表。
[in] dnsOptions
一个整数值,用于控制如何执行主机名解析。值应该是 #::nl::Inet::DNSOptions 枚举中的一个或多个值的 OR 值。
[in] intf
用于连接到对等节点的可选接口,默认值为 INET_NULL_INTERFACEID
返回值
WEAVE_NO_ERROR
当与对等方的连接成功启动时触发。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnection 状态不正确。
WEAVE_ERROR_UNSUPPORTED_AUTH_MODE
如果请求的身份验证模式不受支持,则会发生该错误。
WEAVE_ERROR_INVALID_ADDRESS
如果无法从节点 ID 推导出目标地址,则返回 。
other
TCPEndPoint 连接操作产生的互联网层错误。

DisableKeepAlive

WEAVE_ERROR DisableKeepAlive(
  void
)

WeaveConnection::DisableKeepAlive.

在底层 TCP 连接上停用 TCP keepalive 探测。

注意:此方法只能在 TCP 连接支持的 Weave 连接上调用。 只有在连接处于允许发送状态时,才能调用此方法。

如果没有在连接上启用 keepalive,此方法不会执行任何操作。

详细信息
返回值
WEAVE_NO_ERROR
成功停用连接上的 TCP keepalive 探测。
WEAVE_ERROR_NOT_IMPLEMENTED
是否针对不兼容的端点(例如,BLE)。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象未处于正确的发送消息状态,则会发生该错误。
other
与 TCP 端点相关的互联网层错误启用 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 连接上调用。 - 只有在连接处于允许发送状态时才能调用此方法。

详细信息
参数
[in] interval
keepalive 探测之间的时间间隔(以秒为单位)。此值还可控制从发送上一个数据包到传输第一个 keepalive 探测所间隔的时间。
[in] timeoutCount
视为连接失败之前未确认的探测次数上限。

- 可以多次调用此方法来调整 keepalive 间隔或超时计数。

详细信息
返回值
WEAVE_NO_ERROR
在连接上成功启用 TCP keepalive 探测时启动。
WEAVE_ERROR_NOT_IMPLEMENTED
是否针对不兼容的端点(例如,BLE)。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象未处于正确的发送消息状态,则会发生该错误。
other
与 TCP 端点相关的互联网层错误启用 keepalive 操作。

EnableReceive

void EnableReceive(
  void
)

允许通过此 WeaveConnection 接收。

应用使用此方法向 WeaveConnection 对象指明其已准备好接收通过 TCP 连接到达的任何数据。

另请参阅
DisableReceive()

GetPeerAddressInfo

WEAVE_ERROR GetPeerAddressInfo(
  IPPacketInfo & addrInfo
)

获取对等端的 IP 地址信息。

详细信息
参数
[out] addrInfo
对 IPPacketInfo 对象的引用。
返回值
WEAVE_NO_ERROR
成功时。
WEAVE_ERROR_NOT_IMPLEMENTED
如果为不兼容的端点(例如,BLE)。

GetPeerDescription

void GetPeerDescription(
  char *buf,
  size_t bufSize
) const 

构建一个字符串,用于描述与连接关联的对等节点。

详细信息
参数
[in] buf
指向应将字符串写入到的缓冲区的指针。提供的缓冲区必须至少与 kGetPeerDescription_MaxLength 一样大。如果给定的缓冲区空间更小,则字符串将被截断以适应大小。在任何情况下,输出都将包含 NUL 终止字符。
[in] bufSize
buf 所指向的缓冲区大小。

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 连接上调用。 - 只有在连接处于允许发送状态时才能调用此方法。

- 如果没有在连接上设置用户超时,则此方法将不起作用。

详细信息
返回值
WEAVE_NO_ERROR
成功重置连接上的 TCP 用户超时时触发。
WEAVE_ERROR_NOT_IMPLEMENTED
是否针对不兼容的端点(例如,BLE)。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象未处于正确的发送消息状态,则会发生该错误。
other
与重置 TCP 端点的 TCP 用户超时相关的互联网层错误。

SendMessage

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

通过已建立的连接发送 Weave 消息。

详细信息
参数
[in] msgInfo
指向 WeaveMessageInfo 对象的指针。
[in] msgBuf
指向包含要发送的数据包的 PacketBuffer 对象的指针。
返回值
WEAVE_NO_ERROR
至于是否成功将消息向下发送到网络层。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象未处于正确的发送消息状态,则会发生该错误。
WEAVE_ERROR_INVALID_DESTINATION_NODE_ID
如果未指定目标节点标识符,则会发生此错误。
WEAVE_ERROR_SENDING_BLOCKED
other
与特定端点发送操作相关的 inet 层错误。

SendTunneledMessage

WEAVE_ERROR SendTunneledMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

通过 Weave 连接发送隧道数据包的函数。

通过已建立的连接发送隧道式 Weave 消息。

详细信息
参数
[in] msgInfo
指向 WeaveMessageInfo 对象的指针。
[in] msgBuf
指向包含要发送的数据包的 PacketBuffer 对象的指针。
返回值
WEAVE_NO_ERROR
至于是否成功将消息向下发送到网络层。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象未处于正确的发送消息状态,则会发生该错误。
WEAVE_ERROR_INVALID_DESTINATION_NODE_ID
如果未指定目标节点标识符,则会发生此错误。
WEAVE_ERROR_SENDING_BLOCKED
other
与特定端点发送操作相关的 inet 层错误。

SetConnectTimeout

void SetConnectTimeout(
  const uint32_t connTimeoutMsecs
)

设置超时,以便连接成功或返回错误。

详细信息
参数
[in] connTimeoutMsecs

SetIdleTimeout

WEAVE_ERROR SetIdleTimeout(
  uint32_t timeoutMS
)

为底层网络层连接设置空闲超时。

详细信息
参数
[in] timeoutMS
超时(以毫秒为单位)。
返回值
WEAVE_NO_ERROR
成功设置连接的空闲超时值。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象处于接收消息的正确状态,则会引发该事件。

SetIncoming

void SetIncoming(
  bool val
)

SetUserTimeout

WEAVE_ERROR SetUserTimeout(
  uint32_t userTimeoutMillis
)

WeaveConnection::SetUserTimeout

设置 TCP 用户超时套接字选项。

当该值大于 0 时,它指定了在 TCP 强制关闭相应连接之前传输的数据可以保持未确认状态的最长时间(以毫秒为单位)。如果选项值指定为 0,TCP 将使用系统默认值。如需了解更多详情,请参阅 RFC 5482。

详细信息
参数
[in] userTimeoutMillis
TCP 用户超时值(以毫秒为单位)。

注意:- 此方法只能在 TCP 连接支持的 Weave 连接上调用。 - 只有在连接处于允许发送状态时才能调用此方法。

- 可以多次调用此方法来调整 TCP 用户超时。

详细信息
返回值
WEAVE_NO_ERROR
连接上成功设置 TCP 用户超时时触发。
WEAVE_ERROR_NOT_IMPLEMENTED
是否针对不兼容的端点(例如,BLE)。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象未处于正确的发送消息状态,则会发生该错误。
other
与 TCP 用户超时的 TCP 端点设置相关的互联网层错误。

关停

WEAVE_ERROR Shutdown(
  void
)

执行 TCP 发送和关闭的安全操作,确保所有传出数据都已由对等方的 TCP 堆栈发送和接收。

对于大多数(但不是所有)TCP 实现,收到发送关闭消息也会导致远程主机关闭其一端的连接,从而导致连接关闭。后续调用 Close() 会终止 WeaveConnection

详细信息
返回值
WEAVE_NO_ERROR
成功关闭 TCP 连接时触发。
WEAVE_ERROR_NOT_IMPLEMENTED
是否针对不兼容的端点(例如,BLE)。
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnection 对象的状态有误,则会在启动关停之前关闭。
other
与特定端点关闭操作相关的 inet 层错误。
另请参阅
Close()Abort()