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 Protocol 的一部分)请求的确认后调用的应用回调函数。
WRMPPauseRcvdFunct)(ExchangeContext *ec, uint32_t pauseTime) typedef
void(*
此函数是作为 Weave Reliable Messaging 协议的一部分收到 Throttle 消息或 Delayed Delivery 消息时要调用的应用回调函数。
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
收到的 Throttle 消息的应用回调。
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
确定在此交换中是否至少收到了来自对等方的消息。
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)
向对等节点发送一条 Throttle Flow 消息,请求它限制其消息发送量。

公共类型

@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 Protocol 的一部分)请求的确认后调用的应用回调函数。

具体说明
参数
[in] ec
指向 ExchangeContext 对象的指针。
[in] msgCtxt
指向与要确认的原始消息相关联的某些特定上下文对象的指针。

WRMPPauseRcvdFunct

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

此函数是作为 Weave Reliable Messaging 协议的一部分收到 Throttle 消息或 Delayed Delivery 消息时要调用的应用回调函数。

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

收到的 Throttle 消息的应用回调。

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
)

正常关闭交换上下文。

此调用会使引用计数递减,并在引用计数变为 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
消息编码是否成功。

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
)

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

具体说明
参数
[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
如果没有可用的 PacketBuffers,
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) 或 (false) 来响应收到的消息。

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) 与连接是否关联的布尔值。

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
指示是否已在此交换上下文中从对等方收到消息的布尔值。

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 重新传输计时器之前等待的最长时间。
返回值
如果 Trickle 设置成功,则为 WEAVE_NO_ERROR;否则,INET_ERROR 会映射到 WEAVE_ERROR。

ShouldAutoReleaseConnection

bool ShouldAutoReleaseConnection() const 

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

ShouldDropAck

bool ShouldDropAck(
  void
) const 

确定 WeaveExchangeManager 是否应发送确认。

仅供内部调试使用。

StartTimerT

WEAVE_ERROR StartTimerT(
  void
)

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

具体说明
返回值
WEAVE_NO_ERROR(如果成功),否则 INET_ERROR 映射到 WEAVE_ERROR。

TeardownTrickleRetransmit

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

WRMPSendThrottleFlow

WEAVE_ERROR WRMPSendThrottleFlow(
  uint32_t PauseTimeMillis
)

向对等节点发送一条 Throttle Flow 消息,请求它限制其消息发送量。

具体说明
参数
[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 层是否成功将消息向下发送到网络层。