nl::Weave::ExchangeContext

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

此类表示两个或多个节点之间正在进行的对话 (ExchangeContext)。

摘要

它定义了在 ExchangeContext 中通过各种传输机制(例如 TCP、UDP 或 Weave Reliable Messaging)对 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(*
当收到 Throttle 消息或 Delayed Delivery 消息(作为 Weave Reliable Messaging Protocol 的一部分)时,此函数是应用回调。
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
在交换上下文中处理 Trill 消息。
HasPeerRequestedAck(void) const
bool
确定对等方是否在此广告交易平台上对至少一条消息请求确认。
HasRcvdMsgFromPeer(void) const
bool
确定在此广告交易平台上是否至少收到了一条来自对等方的消息。
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
返回通过 Exchange 发送的出站消息是否应从本地临时 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 字符)的最大长度。

ConnectionClosedFunct

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 类型。

MessageReceiveFunct

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 对象的指针。

RetransmissionTimeoutFunct

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)

当收到 Throttle 消息或 Delayed Delivery 消息(作为 Weave Reliable Messaging Protocol 的一部分)时,此函数是应用回调。

每封邮件都附带一个时间值(以毫秒为单位),该值表示在此 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

指示某个广告交易平台是否允许重复消息的布尔值。

AppState

void * AppState

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

缺点

WeaveConnection * Con

[只读] 关联的 Weave 连接。

EncryptionType

uint8_t EncryptionType

发送邮件时使用的加密类型。

ExchangeId

uint16_t ExchangeId

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

ExchangeMgr

WeaveExchangeManager * ExchangeMgr

[只读] 现有的广告交易平台管理员。

KeyId

uint16_t KeyId

发送邮件时使用的加密密钥。

OnAckRcvd

WRMPAckRcvdFunct OnAckRcvd

收到的确认的应用回调。

OnConnectionClosed

ConnectionClosedFunct OnConnectionClosed

OnDDRcvd

WRMPPauseRcvdFunct OnDDRcvd

针对收到的“延迟递送”消息的应用回调。

OnKeyError

KeyErrorFunct OnKeyError

从对等端收到密钥错误消息时要调用的应用回调。

OnMessageReceived

MessageReceiveFunct OnMessageReceived

OnResponseTimeout

ResponseTimeoutFunct OnResponseTimeout

OnRetransmissionTimeout

RetransmissionTimeoutFunct OnRetransmissionTimeout

OnSendError

WRMPSendErrorFunct OnSendError

发送时针对错误进行的应用回调。

OnThrottleRcvd

WRMPPauseRcvdFunct OnThrottleRcvd

针对收到的节流消息的应用回调。

PeerAddr

IPAddress PeerAddr

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

PeerIntf

InterfaceId PeerIntf

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

(仅对 UDP 有意义。)

PeerNodeId

uint64_t PeerNodeId

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

PeerPort

uint16_t PeerPort

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

ResponseTimeout

Timeout ResponseTimeout

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

RetransInterval

uint32_t RetransInterval

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

mMsgProtocolVersion

uint16_t mMsgProtocolVersion

ExchangeContext 的邮件协议版本。

mWRMPConfig

WRMPConfig mWRMPConfig

WRMP 配置。

公共函数

中止

void Abort(
  void
)

立即取消 Exchange 上下文,并释放对其的所有引用。

AddRef

void AddRef(
  void
)

将交换上下文的参考计数器加 1。

AutoRequestAck

bool AutoRequestAck() const 

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

CancelRetrans

void CancelRetrans(
  void
)

取消 Trickle 重新传输机制。

关闭

void Close(
  void
)

正常关闭交换上下文。

当参考计数为零时,此调用将减少参考计数并释放交换。

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
如果消息缓冲区没有足够的空间来对交换标头进行编码。
WEAVE_NO_ERROR
消息编码是否成功。

GetAutoReleaseKey

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
)

在交换上下文中处理 Trill 消息。

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

HasPeerRequestedAck

bool HasPeerRequestedAck(
  void
) const 

确定对等方是否在此广告交易平台上对至少一条消息请求确认。

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

HasRcvdMsgFromPeer

bool HasRcvdMsgFromPeer(
  void
) const 

确定在此广告交易平台上是否至少收到了一条来自对等方的消息。

详细信息
返回值
返回“true”如果收到邮件,则为“false”。

IsAckPending

bool IsAckPending(
  void
) const 

确定此广告交易平台上是否已有待向对等方发送的确认。

IsConnectionClosed

bool IsConnectionClosed(
  void
) const 

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

详细信息
返回值
返回“true”如果连接关闭,则为“false”。

IsInitiator

bool IsInitiator(
  void
) const 

确定上下文是否为广告交易平台的发起者。

详细信息
返回值
返回“true”如果是发起者,则为“false”。

IsResponseExpected

bool IsResponseExpected(
  void
) const 

确定通过此广告交易平台发送的消息是否需要回复。

详细信息
返回值
返回“true”如果预期响应,则为“false”。

版本

void Release(
  void
)

释放对此广告交易平台上下文的引用。

如果倒计时为 1,则关闭上下文,重置所有应用回调,并停止所有计时器。

SendCommonNullMessage

WEAVE_ERROR SendCommonNullMessage(
  void
)

发送 Common::Null 消息。

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

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 消息协议版本不匹配。例如,如果在 Weave 消息协议版本为 V1 时尝试 Weave Reliable Messaging 语义,就会生成此错误。
WEAVE_ERROR_NOT_CONNECTED
上下文与现在关闭的连接相关联。
WEAVE_ERROR_INCORRECT_STATE
广告交易平台上下文的状态不正确。
WEAVE_NO_ERROR
Weave 层成功将消息向下发送到网络层。

SendMessage

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 消息协议版本不匹配。例如,如果在 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)。

SetAutoReleaseKey

void SetAutoReleaseKey(
  bool autoReleaseKey
)

设置在释放交换后是否应释放与该交换相关联的加密密钥。

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

SetAutoRequestAck

void SetAutoRequestAck(
  bool autoReqAck
)

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

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

SetConnectionClosed

void SetConnectionClosed(
  bool inConnectionClosed
)

设置 kFlagConnectionClosed 标志位。

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

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

SetDropAck

void SetDropAck(
  bool inDropAck
)

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

仅供内部用于调试用途。

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

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)。

SetResponseExpected

void SetResponseExpected(
  bool inResponseExpected
)

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

详细信息
参数
[in] inResponseExpected
一个布尔值,用于指明在此广告交易平台上预期响应为 (true) 还是非 (false)。

SetShouldAutoReleaseConnection

void SetShouldAutoReleaseConnection(
  bool autoReleaseCon
)

设置在释放交换后是否应释放与该交换相关联的 Weave 连接。

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

SetupTrickleRetransmit

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

通过设置相应的重新传输间隔和重播阈值,设置微秒级重新传输机制。

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

ShouldAutoReleaseConnection

bool ShouldAutoReleaseConnection() const 

返回是否应在交换被释放后释放与交换关联的 Weave 连接。

ShouldDropAck

bool ShouldDropAck(
  void
) const 

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

仅供内部用于调试用途。

StartTimerT

WEAVE_ERROR StartTimerT(
  void
)

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

详细信息
返回值
WEAVE_NO_ERROR(如果成功),否则映射到 WEAVE_ERROR 的 INET_ERROR。

TeardownTrickleRetransmit

void TeardownTrickleRetransmit(
  void
)

通过取消 Trickle 中的定期计时器并释放存储 Weave 消息的消息缓冲区,从而破坏 Trickle 重新传输机制。

UseEphemeralUDPPort

bool UseEphemeralUDPPort(
  void
) const 

返回通过 Exchange 发送的出站消息是否应从本地临时 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 消息协议版本不匹配。例如,如果在 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 层成功将消息向下发送到网络层。