nl:: Weave:: ExchangeContext
#include <src/lib/core/WeaveExchangeMgr.h>
此类表示两个或多个节点之间正在进行的对话 (ExchangeContext)。
摘要
它定义了通过各种传输机制(例如 TCP、UDP 或 Weave Reliable Messaging)在 ExchangeContext 中对 Weave 消息进行编码和通信的方法。
公共类型 |
|
---|---|
@34{
|
枚举 |
@35{
|
枚举 |
ConnectionClosedFunct)(ExchangeContext *ec, WeaveConnection *con, WEAVE_ERROR conErr)
|
typedefvoid(*
此函数是在现有 Weave 连接关闭时调用的应用回调函数。 |
KeyErrorFunct)(ExchangeContext *ec, WEAVE_ERROR keyErr)
|
typedefvoid(*
关键错误消息处理函数的类型。 |
MessageReceiveFunct)(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
|
typedefvoid(*
此函数是用于处理收到的 Weave 消息的应用回调。 |
ResponseTimeoutFunct)(ExchangeContext *ec)
|
typedefvoid(*
此函数是在接收响应消息的超时到期时调用的应用回调函数。 |
RetransmissionTimeoutFunct)(ExchangeContext *ec)
|
typedefvoid(*
此函数是在重新传输之前发送的消息的超时到期时调用的应用回调函数。 |
Timeout
|
typedefuint32_t
ExchangeContext 中用于表示超时时间的类型(以毫秒为单位)。 |
WRMPAckRcvdFunct)(ExchangeContext *ec, void *msgCtxt)
|
typedefvoid(*
此函数是在收到 Weave 消息(作为 Weave Reliable Messaging Protocol 的一部分)请求的确认后调用的应用回调函数。 |
WRMPPauseRcvdFunct)(ExchangeContext *ec, uint32_t pauseTime)
|
typedefvoid(*
此函数是作为 Weave Reliable Messaging 协议的一部分收到 Throttle 消息或 Delayed Delivery 消息时要调用的应用回调函数。 |
WRMPSendErrorFunct)(ExchangeContext *ec, WEAVE_ERROR err, void *msgCtxt)
|
typedefvoid(*
此函数是在发送 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_NoAutoRequestAck
|
在发送消息时禁用自动请求确认功能。 |
kSendFlag_RequestAck
|
用于发送请求确认的 WRM 消息。 |
kSendFlag_RetainBuffer
|
用于指示消息在发送后不应释放。 |
kSendFlag_RetransmissionTrickle
|
用于指明要求重新传输 Trickle。 |
kSendFlag_ReuseMessageId
|
用于表示邮件标头中的邮件 ID 可以重复使用。 |
kSendFlag_ReuseSourceId
|
用于指明可重复使用消息标头中的来源节点 ID。 |
ConnectionClosedFunct
void(* ConnectionClosedFunct)(ExchangeContext *ec, WeaveConnection *con, WEAVE_ERROR conErr)
此函数是在现有 Weave 连接关闭时调用的应用回调函数。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
KeyErrorFunct
void(* KeyErrorFunct)(ExchangeContext *ec, WEAVE_ERROR keyErr)
MessageReceiveFunct
void(* MessageReceiveFunct)(ExchangeContext *ec, const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo, uint32_t profileId, uint8_t msgType, PacketBuffer *payload)
此函数是用于处理收到的 Weave 消息的应用回调。
具体说明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
ResponseTimeoutFunct
void(* ResponseTimeoutFunct)(ExchangeContext *ec)
RetransmissionTimeoutFunct
void(* RetransmissionTimeoutFunct)(ExchangeContext *ec)
WRMPAckRcvdFunct
void(* WRMPAckRcvdFunct)(ExchangeContext *ec, void *msgCtxt)
此函数是在收到 Weave 消息(作为 Weave Reliable Messaging Protocol 的一部分)请求的确认后调用的应用回调函数。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
WRMPPauseRcvdFunct
void(* WRMPPauseRcvdFunct)(ExchangeContext *ec, uint32_t pauseTime)
此函数是作为 Weave Reliable Messaging 协议的一部分收到 Throttle 消息或 Delayed Delivery 消息时要调用的应用回调函数。
这类邮件都附带一个时间值(以毫秒为单位),该时间值表示在此 ExchangeContext 上暂停发送 Weave 邮件的时间。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
WRMPSendErrorFunct
void(* WRMPSendErrorFunct)(ExchangeContext *ec, WEAVE_ERROR err, void *msgCtxt)
此函数是在发送 Weave 消息时遇到错误时要调用的应用回调函数。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
公共属性
AllowDuplicateMsgs
bool AllowDuplicateMsgs
指示某个广告交易平台是否允许发送重复邮件的布尔值。
AppState
void * AppState
指向应用专属状态对象的指针。
EncryptionType
uint8_t EncryptionType
发送消息时使用的加密类型。
ExchangeId
uint16_t ExchangeId
[只读] 已分配的广告交易平台 ID。
KeyId
uint16_t KeyId
发送消息时使用的加密密钥。
OnConnectionClosed
ConnectionClosedFunct OnConnectionClosed
OnMessageReceived
MessageReceiveFunct OnMessageReceived
OnResponseTimeout
ResponseTimeoutFunct OnResponseTimeout
OnRetransmissionTimeout
RetransmissionTimeoutFunct OnRetransmissionTimeout
PeerAddr
IPAddress PeerAddr
[只读] 对等节点的 IP 地址。
PeerIntf
InterfaceId PeerIntf
[只读] 向对等方发送消息时使用的出站接口。
(仅适用于 UDP。)
PeerNodeId
uint64_t PeerNodeId
[只读] 对等节点的节点 ID。
PeerPort
uint16_t PeerPort
[只读] 对等节点的端口。
RetransInterval
uint32_t RetransInterval
重新传输间隔的时间(以毫秒为单位);0 表示禁止重新传输。
公共函数
取消
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 )
将交换标头编码到消息缓冲区中。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
GetAutoReleaseKey
bool GetAutoReleaseKey() const
返回在释放广告交易平台时是否应释放与广告交易平台关联的加密密钥。
GetCurrentRetransmitTimeout
uint32_t GetCurrentRetransmitTimeout( void )
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
构建一个描述对等节点及其关联的地址 / 连接信息的字符串。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
HandleTrickleMessage
void HandleTrickleMessage( const IPPacketInfo *pktInfo, const WeaveMessageInfo *msgInfo )
在交换上下文中处理串流消息。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
HasPeerRequestedAck
bool HasPeerRequestedAck( void ) const
确定对等方是否针对此交换中的至少一条消息请求了确认。
具体说明 | |
---|---|
返回值 |
如果请求确认,则返回“true”,否则返回“false”。
|
HasRcvdMsgFromPeer
bool HasRcvdMsgFromPeer( void ) const
确定在此交换中是否至少收到了来自对等方的消息。
具体说明 | |
---|---|
返回值 |
如果收到消息,则返回“true”,否则返回“false”。
|
IsAckPending
bool IsAckPending( void ) const
确定此广告交易平台上是否已有待处理的确认要发送给对等方。
IsConnectionClosed
bool IsConnectionClosed( void ) const
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 消息。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
返回值 |
|
SendMessage
WEAVE_ERROR SendMessage( uint32_t profileId, uint8_t msgType, PacketBuffer *msgPayload, uint16_t sendFlags, void *msgCtxt )
在此广告交易平台上发送 Weave 消息。
具体说明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||
返回值 |
|
SendMessage
WEAVE_ERROR SendMessage( uint32_t profileId, uint8_t msgType, PacketBuffer *msgBuf, uint16_t sendFlags, WeaveMessageInfo *msgInfo, void *msgCtxt )
在此广告交易平台上发送 Weave 消息。
具体说明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||
返回值 |
|
SetAckPending
void SetAckPending( bool inAckPending )
是否需要在此广告交易平台上将确认信息发回给对等方。
具体说明 | |||
---|---|---|---|
参数 |
|
SetAutoReleaseKey
void SetAutoReleaseKey( bool autoReleaseKey )
设置在释放广告交易平台时是否应释放与广告交易平台关联的加密密钥。
具体说明 | |||
---|---|---|---|
参数 |
|
SetAutoRequestAck
void SetAutoRequestAck( bool autoReqAck )
设置是否应在每次发送消息时请求确认。
具体说明 | |||
---|---|---|---|
参数 |
|
SetConnectionClosed
void SetConnectionClosed( bool inConnectionClosed )
设置 kFlagConnectionClosed 标志位。
当与 ExchangeContext 关联的 WeaveConnection 关闭时,系统会设置此标志。
具体说明 | |||
---|---|---|---|
参数 |
|
SetDropAck
void SetDropAck( bool inDropAck )
设置 WeaveExchangeManager 是否应针对此上下文发送确认信息。
仅供内部调试使用。
具体说明 | |||
---|---|---|---|
参数 |
|
SetInitiator
void SetInitiator( bool inInitiator )
设置 kFlagInitiator 标记位。
此标志由发起交换的节点设置。
具体说明 | |||
---|---|---|---|
参数 |
|
SetMsgRcvdFromPeer
void SetMsgRcvdFromPeer( bool inMsgRcvdFromPeer )
设置此交换中的对等方的消息。
具体说明 | |||
---|---|---|---|
参数 |
|
SetPeerRequestedAck
void SetPeerRequestedAck( bool inPeerRequestedAck )
设置此广告交易平台上收到的最后一封邮件是否要求确认。
具体说明 | |||
---|---|---|---|
参数 |
|
SetResponseExpected
void SetResponseExpected( bool inResponseExpected )
设置此广告交易平台上是否会收到响应。
具体说明 | |||
---|---|---|---|
参数 |
|
SetShouldAutoReleaseConnection
void SetShouldAutoReleaseConnection( bool autoReleaseCon )
设置在释放广告交易平台时是否应释放与该广告交易平台关联的 Weave 连接。
具体说明 | |||
---|---|---|---|
参数 |
|
SetupTrickleRetransmit
WEAVE_ERROR SetupTrickleRetransmit( uint32_t retransInterval, uint8_t threshold, uint32_t timeout )
通过设置相应的重新传输间隔和重播阈值,设置微播重新传输机制。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
如果 Trickle 设置成功,则为 WEAVE_NO_ERROR;否则,INET_ERROR 会映射到 WEAVE_ERROR。
|
ShouldAutoReleaseConnection
bool ShouldAutoReleaseConnection() const
返回在释放广告交易平台时是否应释放与广告交易平台关联的 Weave 连接。
StartTimerT
WEAVE_ERROR StartTimerT( void )
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 )
发送“延迟递送”消息,通知发送方节点其之前发送的消息会经历预期延迟,然后才会递送给收件人。
当收件人端节点处于休眠状态时,可能导致邮件在递送前延迟的原因之一。此消息可能是由发送路径中合适的中间节点生成的,该中间节点对收件人十分了解,可以推断递送延迟。在收到此邮件后,对于要还原确认的邮件,发件人会重新调整其重新传输计时器。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
WRMPSendThrottleFlow
WEAVE_ERROR WRMPSendThrottleFlow( uint32_t PauseTimeMillis )
向对等节点发送一条 Throttle Flow 消息,请求它限制其消息发送量。
具体说明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||
返回值 |
|