nl::Weave::ExchangeContext

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

此类表示两个或多个节点之间的持续对话 (ExchangeContext)。

摘要

它定义了各种传输机制(例如 TCP、UDP 或 Weave Reliable Messaging)中对 ExchangeContext 中的 Weave 消息进行编码和通信的方法。

公共类型

@34{
  kSendFlag_AutoRetrans = 0x0001,
  kSendFlag_ExpectResponse = 0x0002,
  kSendFlag_RetransmissionTrickle = 0x0004,
  kSendFlag_DelaySend = 0x0008,
  kSendFlag_ReuseMessageId = 0x0010,
  kSendFlag_ReuseSourceId = 0x0020,
  kSendFlag_RetainBuffer = 0x0040,
  kSendFlag_AlreadyEncoded = 0x0080,
  kSendFlag_DefaultMulticastSourceAddress = 0x0100,
  kSendFlag_FromInitiator = 0x0200,
  kSendFlag_RequestAck = 0x0400,
  kSendFlag_NoAutoRequestAck = 0x0800,
  kSendFlag_MulticastFromLinkLocal = kSendFlag_DefaultMulticastSourceAddress
}
枚举
@35{
  kGetPeerDescription_MaxLength = nl::Weave::kWeavePeerDescription_MaxLength
}
枚举
ConnectionClosedFunct)(ExchangeContext *ec, WeaveConnection *con, WEAVE_ERROR conErr) typedef
void(*
此函数是在现有 Weave 连接关闭时调用的应用回调函数。
KeyErrorFunct)(ExchangeContext *ec, WEAVE_ERROR keyErr) typedef
void(*
按键错误消息处理函数的类型。
MessageReceiveFunct)(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload) typedef
void(*
此函数是用于处理收到的 Weave 消息的应用回调。
ResponseTimeoutFunct)(ExchangeContext *ec) typedef
void(*
此函数是用于接收响应消息的超时时限时调用的应用回调函数。
RetransmissionTimeoutFunct)(ExchangeContext *ec) typedef
void(*
此函数是用于在先前传输的消息的重新传输超时时调用的应用回调。
Timeout typedef
uint32_t
ExchangeContext 中用于表示超时的类型(以毫秒为单位)。
WRMPAckRcvdFunct)(ExchangeContext *ec, void *msgCtxt) typedef
void(*
当收到 Weave 消息(请求作为 Weave Reliable Messaging 协议的一部分)时,该函数将调用的应用回调函数。
WRMPPauseRcvdFunct)(ExchangeContext *ec, uint32_t pauseTime) typedef
void(*
在收到节流消息或延迟传送消息作为 Weave Reliable Messaging Protocol(Weave 可靠消息传递协议)的一部分时,此函数是调用的应用回调。
WRMPSendErrorFunct)(ExchangeContext *ec, WEAVE_ERROR err, void *msgCtxt) typedef
void(*
此函数是在发送 Weave 消息时调用的应用回调。

公共属性

AllowDuplicateMsgs
bool
指示给定交换是否允许重复消息的布尔值指示符。
AppState
void *
指向应用专属状态对象的指针。
Con
[只读] 关联的 Weave 连接。
EncryptionType
uint8_t
发送消息时使用的加密类型。
ExchangeId
uint16_t
[只读] 已分配的广告交易平台 ID。
ExchangeMgr
[只读] 所有者是广告交易平台管理员。
KeyId
uint16_t
发送消息时使用的加密密钥。
OnAckRcvd
已接收确认的应用回调。
OnConnectionClosed
OnDDRcvd
收到延迟送达消息的应用回调。
OnKeyError
从对等端收到按键错误消息时要调用的应用回调函数。
OnMessageReceived
OnResponseTimeout
OnRetransmissionTimeout
OnSendError
发送时出错的应用回调。
OnThrottleRcvd
已接收节流消息的应用回调。
PeerAddr
IPAddress
[只读] 对等节点的 IP 地址。
PeerIntf
InterfaceId
[只读] 向对等设备发送消息时使用的出站接口。
PeerNodeId
uint64_t
[只读] 对等节点的节点 ID。
PeerPort
uint16_t
[只读] 对等节点的端口。
ResponseTimeout
等待响应的最长时间(以毫秒为单位);0 表示停用响应超时。
RetransInterval
uint32_t
重新传输的时间间隔(以毫秒为单位);0 表示禁止重新传输。
mMsgProtocolVersion
uint16_t
ExchangeContext 的消息协议版本。
mWRMPConfig
WRMP 配置。

公共函数

Abort(void)
void
立即中止 Exchange 上下文并释放对它的所有引用。
AddRef(void)
void
将广告交易平台上下文的参考计数器递增 1。
AutoRequestAck() const
bool
返回每次发送消息时是否请求确认。
CancelRetrans(void)
void
取消 Trickle 重新传输机制。
Close(void)
void
正常关闭交换上下文。
EncodeExchHeader(WeaveExchangeHeader *exchangeHeader, uint32_t profileId, uint8_t msgType, PacketBuffer *msgBuf, uint16_t sendFlags)
将交换标头编码为消息缓冲区。
GetAutoReleaseKey() const
bool
返回是否应释放与该广告交易平台关联的加密密钥。
GetCurrentRetransmitTimeout(void)
uint32_t
获取当前的重新传输超时。
GetPeerDescription(char *buf, uint32_t bufSize) const
void
构造一个字符串,描述对等节点及其关联的地址 / 连接信息。
HandleTrickleMessage(const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo)
void
在广告交易平台上下文中处理串联消息。
HasPeerRequestedAck(void) const
bool
确定在此广告交易平台上是否至少向一条消息发送了一条确认请求。
HasRcvdMsgFromPeer(void) const
bool
确定是否至少有 1 个关于此广告交易平台的消息发送到了对等端。
IsAckPending(void) const
bool
确定是否有确认信息正在等待发送到此广告交易平台的对等设备。
IsConnectionClosed(void) const
bool
确定 ExchangeContext 是否有关联的活跃 WeaveConnection
IsInitiator(void) const
bool
判断情境是否为交换的发起者。
IsResponseExpected(void) const
bool
确定对通过此交换发送的邮件是否应该有响应。
Release(void)
void
对此广告交易平台上下文的发布引用。
SendCommonNullMessage(void)
发送 Common::Null 消息。
SendMessage(uint32_t profileId, uint8_t msgType, PacketBuffer *msgPayload, uint16_t sendFlags, void *msgCtxt)
在此广告交易平台上发送 Weave 消息。
SendMessage(uint32_t profileId, uint8_t msgType, PacketBuffer *msgBuf, uint16_t sendFlags, WeaveMessageInfo *msgInfo, void *msgCtxt)
在此广告交易平台上发送 Weave 消息。
SetAckPending(bool inAckPending)
void
设置是否需要将确认信息发送回该广告交易平台上的对等网络。
SetAutoReleaseKey(bool autoReleaseKey)
void
设置是否应释放与该广告交易平台关联的加密密钥。
SetAutoRequestAck(bool autoReqAck)
void
设置是否应在每次发送消息时请求确认。
SetConnectionClosed(bool inConnectionClosed)
void
设置 kFlagConnectionClosed 标记位。
SetDropAck(bool inDropAck)
void
设置 WeaveExchangeManager 不应针对此上下文发送确认。
SetInitiator(bool inInitiator)
void
设置 kFlagInitiator 标志位。
SetMsgRcvdFromPeer(bool inMsgRcvdFromPeer)
void
设置是否从该交换机的对等端收到邮件。
SetPeerRequestedAck(bool inPeerRequestedAck)
void
设置是否在此广告交易平台上收到的上一条消息中请求了确认。
SetResponseExpected(bool inResponseExpected)
void
设置在此广告交易平台上是否会收到响应。
SetShouldAutoReleaseConnection(bool autoReleaseCon)
void
设置是否应释放与该广告交易平台关联的 Weave 连接。
SetupTrickleRetransmit(uint32_t retransInterval, uint8_t threshold, uint32_t timeout)
通过设置相应的重新传输时间间隔和重新广播阈值,设置串行重新传输机制。
ShouldAutoReleaseConnection() const
bool
返回是否应释放与该广告交易平台关联的 Weave 连接。
ShouldDropAck(void) const
bool
确定 WeaveExchangeManager 是否不应发送确认。
StartTimerT(void)
启动 Trickle 重新广播算法的定期重新传输计时器机制。
TeardownTrickleRetransmit(void)
void
取消 Trickle 内的周期性计时器并释放包含 Weave 消息的消息缓冲区,从而拆除 Trickle 重新传输机制。
UseEphemeralUDPPort(void) const
bool
返回是否应通过交换发送的出站消息从本地临时 UDP 端口发送。
WRMPFlushAcks(void)
WRMPSendDelayedDelivery(uint32_t PauseTimeMillis, uint64_t DelayedNodeId)
发送延迟递送邮件,以通知发送节点其递送的邮件在递送至收件人之前会出现延迟。
WRMPSendThrottleFlow(uint32_t PauseTimeMillis)
向对等节点发送节流消息,以请求限制其发送消息。

公共类型

@34

 @34
属性
kSendFlag_AlreadyEncoded

用于指示消息已经过编码。

kSendFlag_AutoRetrans

用于指明已启用自动重新传输。

kSendFlag_DefaultMulticastSourceAddress

用于指示在发送 IPv6 多播消息时应使用默认 IPv6 源地址选择。

kSendFlag_DelaySend

用于指示需要延迟发送当前消息。

kSendFlag_ExpectResponse

用于指明要在指定的超时时间内收到响应。

kSendFlag_FromInitiator

用于指示当前消息是交换的发起者。

kSendFlag_MulticastFromLinkLocal

弃用了 kSendFlag_DefaultMulticastSourceAddress 的别名。

kSendFlag_NoAutoRequestAck

发送消息时禁用自动请求确认功能。

kSendFlag_RequestAck

用于发送 WRM 消息以请求确认。

kSendFlag_RetainBuffer

用于指示在发送消息后不应释放消息缓冲区。

kSendFlag_RetransmissionTrickle

用于指示 Trickle 的重新传输要求。

kSendFlag_ReuseMessageId

用于指示可重复使用邮件标头中的邮件 ID。

kSendFlag_ReuseSourceId

用于指示可重复使用邮件标头中的源节点 ID。

@35

 @35
属性
kGetPeerDescription_MaxLength

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

连接关闭方式

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

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

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。
[in] con
指向 WeaveConnection 对象的指针。
[in] conErr
连接关闭时报告的 WEAVE_ERROR 类型。

KeyErrorFunct

void(* KeyErrorFunct)(ExchangeContext *ec, WEAVE_ERROR keyErr)

按键错误消息处理函数的类型。

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。
[in] keyErr
密钥错误消息中报告的 WEAVE_ERROR 类型。

消息接收功能

void(* MessageReceiveFunct)(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)

此函数是用于处理收到的 Weave 消息的应用回调。

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。
[in] pktInfo
指向 IPPacketInfo 对象的指针。
[in] msgInfo
指向 WeaveMessageInfo 对象的指针。
[in] profileId
收到的消息的配置文件标识符。
[in] msgType
相应资料的邮件类型。
[in] payload
指向包含消息载荷的 PacketBuffer 对象的指针。

ResponseTimeoutFunct

void(* ResponseTimeoutFunct)(ExchangeContext *ec)

此函数是用于接收响应消息的超时时限时调用的应用回调函数。

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。

重新传输超时函数

void(* RetransmissionTimeoutFunct)(ExchangeContext *ec)

此函数是用于在先前传输的消息的重新传输超时时调用的应用回调。

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。

超时

uint32_t Timeout

ExchangeContext 中用于表示超时的类型(以毫秒为单位)。

WRMPAckRcvdFunct

void(* WRMPAckRcvdFunct)(ExchangeContext *ec, void *msgCtxt)

当收到 Weave 消息(请求作为 Weave Reliable Messaging 协议的一部分)时,该函数将调用的应用回调函数。

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。
[in] msgCtxt
指向与正在确认的原始消息关联的特定上下文对象的指针。

WRMPPauseRcvdFunct

void(* WRMPPauseRcvdFunct)(ExchangeContext *ec, uint32_t pauseTime)

在收到节流消息或延迟传送消息作为 Weave Reliable Messaging Protocol(Weave 可靠消息传递协议)的一部分时,此函数是调用的应用回调。

这些消息都附带时间值(以毫秒为单位),该时间值表示暂停在此 ExchangeContext 上发送 Weave 消息的时间。

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。
[in] pauseTime
暂停传输的时间(以毫秒为单位)。

WRMPSendErrorFunct

void(* WRMPSendErrorFunct)(ExchangeContext *ec, WEAVE_ERROR err, void *msgCtxt)

此函数是在发送 Weave 消息时调用的应用回调。

详细信息
参数
[in] ec
指向 ExchangeContext 对象的指针。
[in] err
发送消息期间遇到的 WEAVE_ERROR 类型。
[in] msgCtxt
指向与在报告中显示的原始消息关联的特定上下文对象的指针。

公共属性

AllowDuplicateMsgs(允许重复消息)

bool AllowDuplicateMsgs

指示给定交换是否允许重复消息的布尔值指示符。

应用状态

void * AppState

指向应用专属状态对象的指针。

缺点

WeaveConnection * Con

[只读] 关联的 Weave 连接。

EncryptionType

uint8_t EncryptionType

发送消息时使用的加密类型。

广告交易平台 ID

uint16_t ExchangeId

[只读] 已分配的广告交易平台 ID。

广告交易平台

WeaveExchangeManager * ExchangeMgr

[只读] 所有者是广告交易平台管理员。

KeyId

uint16_t KeyId

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

OnAckRcvd

WRMPAckRcvdFunct OnAckRcvd

已接收确认的应用回调。

连接关闭

ConnectionClosedFunct OnConnectionClosed

OnDDRcvd

WRMPPauseRcvdFunct OnDDRcvd

收到延迟送达消息的应用回调。

OnKeyError

KeyErrorFunct OnKeyError

从对等端收到按键错误消息时要调用的应用回调函数。

OnMessageReceived

MessageReceiveFunct OnMessageReceived

OnResponseTimeout

ResponseTimeoutFunct OnResponseTimeout

OnRetransmissionTimeout

RetransmissionTimeoutFunct OnRetransmissionTimeout

OnSendError

WRMPSendErrorFunct OnSendError

发送时出错的应用回调。

OnThrottleRcvd

WRMPPauseRcvdFunct OnThrottleRcvd

已接收节流消息的应用回调。

点对点

IPAddress PeerAddr

[只读] 对等节点的 IP 地址。

对等 Intf

InterfaceId PeerIntf

[只读] 向对等设备发送消息时使用的出站接口。

(仅适用于 UDP。)

对等节点 ID

uint64_t PeerNodeId

[只读] 对等节点的节点 ID。

对等端口

uint16_t PeerPort

[只读] 对等节点的端口。

响应超时

Timeout ResponseTimeout

等待响应的最长时间(以毫秒为单位);0 表示停用响应超时。

重新传输间隔

uint32_t RetransInterval

重新传输的时间间隔(以毫秒为单位);0 表示禁止重新传输。

mMsgProtocolVersion

uint16_t mMsgProtocolVersion

ExchangeContext 的消息协议版本。

mWRMP 配置

WRMPConfig mWRMPConfig

WRMP 配置。

公共函数

取消

void Abort(
  void
)

立即中止 Exchange 上下文并释放对它的所有引用。

添加引用

void AddRef(
  void
)

将广告交易平台上下文的参考计数器递增 1。

自动请求

bool AutoRequestAck() const 

返回每次发送消息时是否请求确认。

取消重新传输

void CancelRetrans(
  void
)

取消 Trickle 重新传输机制。

关闭

void Close(
  void
)

正常关闭交换上下文。

此调用会减少引用计数,并在引用计数变为 0 时释放交换。

EncodeExchHeader 接口中的方法

WEAVE_ERROR EncodeExchHeader(
  WeaveExchangeHeader *exchangeHeader,
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *msgBuf,
  uint16_t sendFlags
)

将交换标头编码为消息缓冲区。

详细信息
参数
[in] exchangeHeader
指向 Weave Exchange 标头对象的指针。
[in] profileId
要发送的 Weave 消息的配置文件标识符。
[in] msgType
相应资料的邮件类型。
[in] msgBuf
指向 Weave 消息所需的 PacketBuffer 的指针。
[in] sendFlags
应用为发送的 Weave 消息设置的标志。
返回值
WEAVE_ERROR_BUFFER_TOO_SMALL
消息缓冲区空间不足,无法对 Exchange 标头进行编码。
WEAVE_NO_ERROR
消息编码是否成功。

获取自动释放密钥

bool GetAutoReleaseKey() const 

返回是否应释放与该广告交易平台关联的加密密钥。

GetCurrentRetransmitTimeout

uint32_t GetCurrentRetransmitTimeout(
  void
)

获取当前的重新传输超时。

根据 ExchangeContext 是否存在与其对等端的有效消息交换,该响应可以是初始重新传输超时或主动重新传输超时。

详细信息
返回值
当前的重新传输时间。

GetPeerDescription

void GetPeerDescription(
  char *buf,
  uint32_t bufSize
) const 

构造一个字符串,描述对等节点及其关联的地址 / 连接信息。

详细信息
参数
[in] buf
指向应该写入字符串的缓冲区的指针。提供的缓冲区不得小于 kGetPeerDescription_MaxLength。如果给定较小的缓冲区,则字符串将被截断以适应窗口大小。在所有情况下,输出都将包含一个 NUL 终止字符。
[in] bufSize
buf 所指向的缓冲区大小。

HandleTrickleMessage

void HandleTrickleMessage(
  const IPPacketInfo *pktInfo,
  const WeaveMessageInfo *msgInfo
)

在广告交易平台上下文中处理串联消息。

详细信息
参数
[in] pktInfo
指向 IPPacketInfo 对象的指针。
[in] msgInfo
指向 Weave 消息信息结构的指针。

HasPeerRequestedAck

bool HasPeerRequestedAck(
  void
) const 

确定在此广告交易平台上是否至少向一条消息发送了一条确认请求。

详细信息
返回值
如果请求确认,则返回 'true'false'。

HasRcvdMsgFromPeer

bool HasRcvdMsgFromPeer(
  void
) const 

确定是否至少有 1 个关于此广告交易平台的消息发送到了对等端。

详细信息
返回值
如果收到消息,则返回 'true' else 'false'。

待确认

bool IsAckPending(
  void
) const 

确定是否有确认信息正在等待发送到此广告交易平台的对等设备。

IsConnectionClosed

bool IsConnectionClosed(
  void
) const 

确定 ExchangeContext 是否有关联的活跃 WeaveConnection

详细信息
返回值
如果连接关闭,则返回 true,否则返回 'false'。

启动程序

bool IsInitiator(
  void
) const 

判断情境是否为交换的发起者。

详细信息
返回值
如果是启动器,则返回 'true' else 'false'。

预期响应

bool IsResponseExpected(
  void
) const 

确定对通过此交换发送的邮件是否应该有响应。

详细信息
返回值
如果返回预期响应,则返回 'true' else 'false'。

版本

void Release(
  void
)

对此广告交易平台上下文的发布引用。

如果数量减少至一,则关闭上下文,重置所有应用回调,并停止所有计时器。

SendCommonNullMessage

WEAVE_ERROR SendCommonNullMessage(
  void
)

发送 Common::Null 消息。

详细信息
返回值
WEAVE_ERROR_NO_MEMORY
如果没有可用的 PacketBuffer。
WEAVE_NO_ERROR
表示方法成功或错误不是很严重。
other
SendMessage() 返回的另一个严重错误。

发送消息

WEAVE_ERROR SendMessage(
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *msgPayload,
  uint16_t sendFlags,
  void *msgCtxt
)

在此广告交易平台上发送 Weave 消息。

详细信息
参数
[in] profileId
要发送的 Weave 消息的配置文件标识符。
[in] msgType
相应资料的邮件类型。
[in] msgBuf
指向包含 Weave 消息的 PacketBuffer 对象的指针。
[in] sendFlags
应用为发送的 Weave 消息设置的标志。
[in] msgCtxt
指向与正在发送消息关联的应用上下文对象的指针。
返回值
WEAVE_ERROR_INVALID_ARGUMENT
如果向此 SendMessage API 传递了无效参数,则会发生此错误。
WEAVE_ERROR_SEND_THROTTLED
如果使用 Weave 可靠的消息传递协议时,此交换上下文受到限制。
WEAVE_ERROR_WRONG_MSG_VERSION_FOR_EXCHANGE
。例如,如果在 Weave 消息协议版本为 V1 的情况下尝试使用 Weave Reliable Messaging 语义,就会生成此错误。
WEAVE_ERROR_NOT_CONNECTED
上下文与当前已关闭的连接相关联。
WEAVE_ERROR_INCORRECT_STATE
如果交换上下文的状态不正确,则会发生该错误。
WEAVE_NO_ERROR
如果 Weave 层成功将消息向下发送到网络层。

发送消息

WEAVE_ERROR SendMessage(
  uint32_t profileId,
  uint8_t msgType,
  PacketBuffer *msgBuf,
  uint16_t sendFlags,
  WeaveMessageInfo *msgInfo,
  void *msgCtxt
)

在此广告交易平台上发送 Weave 消息。

详细信息
参数
[in] profileId
要发送的 Weave 消息的配置文件标识符。
[in] msgType
相应资料的邮件类型。
[in] msgBuf
指向包含 Weave 消息的 PacketBuffer 对象的指针。
[in] sendFlags
应用为发送的 Weave 消息设置的标志。
[in] msgInfo
指向 WeaveMessageInfo 对象的指针。
[in] msgCtxt
指向与正在发送消息关联的应用上下文对象的指针。
返回值
WEAVE_ERROR_INVALID_ARGUMENT
如果向此 SendMessage API 传递了无效参数,则会发生此错误。
WEAVE_ERROR_SEND_THROTTLED
如果使用 Weave 可靠的消息传递协议时,此交换上下文受到限制。
WEAVE_ERROR_WRONG_MSG_VERSION_FOR_EXCHANGE
。例如,如果在 Weave 消息协议版本为 V1 的情况下尝试使用 Weave Reliable Messaging 语义,就会生成此错误。
WEAVE_ERROR_NOT_CONNECTED
上下文与当前已关闭的连接相关联。
WEAVE_ERROR_INCORRECT_STATE
如果交换上下文的状态不正确,则会发生该错误。
WEAVE_NO_ERROR
如果 Weave 层成功将消息向下发送到网络层。

SetAckPending

void SetAckPending(
  bool inAckPending
)

设置是否需要将确认信息发送回该广告交易平台上的对等网络。

详细信息
参数
[in] inAckPending
一个布尔值,指示是否应返回 (true)(否)/返回确认以响应收到的消息。

设置自动释放键

void SetAutoReleaseKey(
  bool autoReleaseKey
)

设置是否应释放与该广告交易平台关联的加密密钥。

详细信息
参数
[in] autoReleaseKey
如果应自动释放消息加密密钥,则为 True。

设置自动请求 Ack

void SetAutoRequestAck(
  bool autoReqAck
)

设置是否应在每次发送消息时请求确认。

详细信息
参数
[in] autoReqAck
一个布尔值,用于指示是否应在每次发送消息时请求确认。

已封闭连接

void SetConnectionClosed(
  bool inConnectionClosed
)

设置 kFlagConnectionClosed 标记位。

当与 ExchangeContext 关联的 WeaveConnection 关闭时,系统就会设置此标记。

详细信息
参数
[in] inConnectionClosed
指示 (true) 或 (false) 上下文与连接相关联的布尔值。

SetDropAck

void SetDropAck(
  bool inDropAck
)

设置 WeaveExchangeManager 不应针对此上下文发送确认。

仅供调试使用。

详细信息
参数
[in] inDropAck
一个布尔值,用于指示是否应为交换发送 (true)(否)确认。

SetInitiator

void SetInitiator(
  bool inInitiator
)

设置 kFlagInitiator 标志位。

此标志由发起交换的节点设置。

详细信息
参数
[in] inInitiator
指示 (true) 或 (false) 上下文是否为交换的发起者的布尔值。

SetMsgRcvdFromPeer

void SetMsgRcvdFromPeer(
  bool inMsgRcvdFromPeer
)

设置是否从该交换机的对等端收到邮件。

详细信息
参数
[in] inMsgRcvdFromPeer
一个布尔值,指示是否在此交换上下文中接收来自对等方的消息 (true) (false)。

SetPeerRequestedAck

void SetPeerRequestedAck(
  bool inPeerRequestedAck
)

设置是否在此广告交易平台上收到的上一条消息中请求了确认。

详细信息
参数
[in] inPeerRequestedAck
指示上次收到的消息中是否请求了确认 (true) 或是否为 false 的布尔值。

预计响应时间

void SetResponseExpected(
  bool inResponseExpected
)

设置在此广告交易平台上是否会收到响应。

详细信息
参数
[in] inResponseExpected
一个布尔值,指示是否 (true) 或 (false) 响应此广告交易平台上的请求。

SetShouldAutoReleaseConnection

void SetShouldAutoReleaseConnection(
  bool autoReleaseCon
)

设置是否应释放与该广告交易平台关联的 Weave 连接。

详细信息
参数
[in] autoReleaseCon
如果 Weave 连接应自动释放,则为 true。

SetupTrickle 重新传输

WEAVE_ERROR SetupTrickleRetransmit(
  uint32_t retransInterval,
  uint8_t threshold,
  uint32_t timeout
)

通过设置相应的重新传输时间间隔和重新广播阈值,设置串行重新传输机制。

详细信息
参数
[in] retransInterval
Trickle 重播算法的重新传输时间间隔。
[in] threshold
消息被转发的次数上限。
[in] timeout
取消 Trickle 重新传输计时器前的最长等待时间。
返回值
如果 Trickle 设置成功,则返回 WEAVE_NO_ERROR,否则会映射到 WEAVE_ERROR 的 INET_ERROR。

应该自动释放连接

bool ShouldAutoReleaseConnection() const 

返回是否应释放与该广告交易平台关联的 Weave 连接。

应该放置

bool ShouldDropAck(
  void
) const 

确定 WeaveExchangeManager 是否不应发送确认。

仅供调试使用。

启动计时器

WEAVE_ERROR StartTimerT(
  void
)

启动 Trickle 重新广播算法的定期重新传输计时器机制。

详细信息
返回值
如果成功,则调用 WEAVE_NO_ERROR,否则会映射为 WEAVE_ERROR 的 INET_ERROR。

拆解 TrickleRetransmit

void TeardownTrickleRetransmit(
  void
)

取消 Trickle 内的周期性计时器并释放包含 Weave 消息的消息缓冲区,从而拆除 Trickle 重新传输机制。

UseEphemeralUDPPort

bool UseEphemeralUDPPort(
  void
) const 

返回是否应通过交换发送的出站消息从本地临时 UDP 端口发送。

WRMPFlushAcks

WEAVE_ERROR WRMPFlushAcks(
  void
)

WRMPSendDelayedDelivery

WEAVE_ERROR WRMPSendDelayedDelivery(
  uint32_t PauseTimeMillis,
  uint64_t DelayedNodeId
)

发送延迟递送邮件,以通知发送节点其递送的邮件在递送至收件人之前会出现延迟。

可能导致邮件在递送之前延迟的原因之一是收件人结束节点处于休眠状态。此邮件可能是由发送路径中合适的中间节点生成的,该节点知道充分的信息,可以推断出延迟递送。收到此消息后,发送者会重新调整重发计时器的查找时间,以确保返回确认信息。

详细信息
参数
[in] pauseTimeMillis
之前发送的邮件的预计发送时间(以毫秒为单位)。
[in] delayedNodeId
消息接收延迟的对等节点的节点标识符。
返回值
WEAVE_ERROR_INVALID_ARGUMENT
如果向此 SendMessage API 传递了无效参数,则会发生此错误。
WEAVE_ERROR_WRONG_MSG_VERSION_FOR_EXCHANGE
。例如,如果在 Weave 消息协议版本为 V1 的情况下尝试使用 Weave Reliable Messaging 语义,就会生成此错误。
WEAVE_ERROR_NOT_CONNECTED
上下文与当前已关闭的连接相关联。
WEAVE_ERROR_INCORRECT_STATE
如果交换上下文的状态不正确,则会发生该错误。
WEAVE_NO_ERROR
如果 Weave 层成功将消息向下发送到网络层。

WRMPSendThrottleFlow

WEAVE_ERROR WRMPSendThrottleFlow(
  uint32_t PauseTimeMillis
)

向对等节点发送节流消息,以请求限制其发送消息。

详细信息
参数
[in] pauseTimeMillis
收件人限制其发送时间(以毫秒为单位)。
返回值
WEAVE_ERROR_INVALID_ARGUMENT
向此 SendMessage API 传递的参数无效。
WEAVE_ERROR_SEND_THROTTLED
使用 Weave 可靠消息传递协议时,此交换上下文是否受到限制。
WEAVE_ERROR_WRONG_MSG_VERSION_FOR_EXCHANGE
如果支持的发送操作与支持的 Weave 消息协议版本不匹配,则会发生此错误。例如,如果在 Weave 消息协议版本为 V1 的情况下尝试使用 Weave Reliable Messaging 语义,就会生成此错误。
WEAVE_ERROR_NOT_CONNECTED
上下文是否与某个现已关闭的连接相关联。
WEAVE_ERROR_INCORRECT_STATE
交换上下文的状态不正确。
WEAVE_NO_ERROR
如果 Weave 层成功将消息向下发送到网络层。