nl:: Weave:: WeaveMessageLayer
#include <src/lib/core/WeaveMessageLayer.h>
WeaveMessageLayer 类的定义,用于管理与其他 Weave 节点的通信。
总结
它采用多个 InetLayer 端点之一来与其他 Weave 节点建立通信通道。
构造函数和构造函数 |
|
---|---|
WeaveMessageLayer(void)
Weave Message 层构造函数。
|
公共类型 |
|
---|---|
AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err)
|
typedefvoid(*
此函数是一个更高的层回调,用于在处理传入的 TCP 连接期间报告错误。 |
CallbackRemovedFunct)(void *listenerState)
|
typedefvoid(*
可调用此函数来移除回调。 |
ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con)
|
typedefvoid(*
此函数是用于处理传入 TCP 连接的较高层回调。 |
MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)
|
typedefvoid(*
此函数是用于报告消息层 Activity 更改的应用回调。 |
MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
|
typedefvoid(*
此函数是在收到基于 UDP 的 Weave 消息时调用的较高层回调。 |
ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo)
|
typedefvoid(*
此函数是在遇到错误时调用的较高层回调。 |
State{
|
枚举 WeaveMessageLayer 的状态。 |
TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload)
|
typedefvoid(*
此函数是通过本地 UDP 隧道收到隧道数据包时调用的更高层回调。 |
公共属性 |
|
---|---|
AppState
|
void *
指向特定于应用的状态对象的指针。
|
ExchangeMgr
|
[只读] 关联的 WeaveExchangeManager 对象。
|
FabricState
|
[只读] 关联的 WeaveFabricState 对象。
|
IncomingConIdleTimeout
|
uint32_t
传入连接的默认空闲超时(以毫秒为单位)。
|
Inet
|
InetLayer *
[只读] 关联的 InetLayer 对象。
|
IsListening
|
bool
[只读] 如果监听传入的连接/消息,则为 true,否则为 false。
|
OnAcceptError
|
|
OnConnectionReceived
|
|
OnMessageReceived
|
|
OnReceiveError
|
|
OnUDPTunneledMessageReceived
|
|
SecurityMgr
|
[只读] 关联的 WeaveSecurityManager 对象。
|
State
|
uint8_t
[只读] WeaveMessageLayer 对象的状态。
|
SystemLayer
|
|
mDropMessage
|
bool
仅供“调试”使用;设置后,WeaveMessageLayer 会丢弃消息并返回。
|
公共函数 |
|
---|---|
ClearUnsecuredConnectionListener(ConnectionReceiveFunct oldOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved)
|
|
CloseEndpoints(void)
|
关闭所有打开的 TCP 和 UDP 端点。
|
CreateTunnel(WeaveConnectionTunnel **tunPtr, WeaveConnection & conOne, WeaveConnection & conTwo, uint32_t inactivityTimeoutMS)
|
通过将两个指定的 WeaveConnection 耦合来创建 WeaveConnectionTunnel。
|
DecodeHeader(PacketBuffer *msgBuf, WeaveMessageInfo *msgInfo, uint8_t **payloadStart)
|
从收到的 Weave 消息中解码 Weave Message 层标头。
|
EncodeMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf, WeaveConnection *con, uint16_t maxLen, uint16_t reserve)
|
将 WeaveMessageLayer 标头编码到 PacketBuffer 中。
|
EncodeMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntId, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
|
将 Weave Message 层标头编码到 PacketBuffer 中。
|
EphemeralUDPPortEnabled(void) const
|
bool
检查是否应从临时 UDP 源端口发送本地发起的 Weave UDP 交换。
|
GetConnectionPoolStats(nl::Weave::System::Stats::count_t & aOutInUse) const
|
void
获取正在使用的 WeaveConnection 数量和池的大小。
|
IPv4ListenEnabled(void) const
|
bool
检查 WeaveMessageLayer 是否已配置为通过 IPv4 监听入站通信。
|
IPv6ListenEnabled(void) const
|
bool
检查 WeaveMessageLayer 是否已配置为通过 IPv4 监听入站通信。
|
Init(InitContext *context)
|
初始化 Weave Message 层对象。
|
IsBoundToLocalIPv4Address(void) const
|
bool
检查 WeaveMessageLayer 是否已绑定到本地 IPv4 地址。
|
IsBoundToLocalIPv6Address(void) const
|
bool
检查 WeaveMessageLayer 是否绑定到本地 IPv6 地址。
|
IsMessageLayerActive(void)
|
bool
|
NewConnection(void)
|
从池中创建新的 WeaveConnection 对象。
|
NewConnectionTunnel(void)
|
从池中创建新的 WeaveConnectionTunnel 对象。
|
ReEncodeMessage(PacketBuffer *buf)
|
|
RefreshEndpoints(void)
|
根据系统网络接口的当前状态刷新 InetLayer 端点。
|
ResendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
|
ResendMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
|
ResendMessage(const IPAddress & destAddr, uint16_t destPort, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
|
ResendMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId interfaceId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
|
SendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
对底层 Inetlayer UDP 端点进行编码后,发送 Weave 消息。
|
SendMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
对底层 Inetlayer UDP 端点进行编码后,发送 Weave 消息。
|
SendMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntfId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
对底层 Inetlayer UDP 端点进行编码后,发送 Weave 消息。
|
SendUDPTunneledMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
用于通过本地 UDP 隧道发送隧道数据包的函数。
|
SetSignalMessageLayerActivityChanged(MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler)
|
void
设置在消息层的 Activity 每次发生更改时都会调用的应用处理程序。
|
SetTCPListenEnabled(bool val)
|
void
在 WeaveMessageLayer 中启用或停用入站 TCP 连接监听功能。
|
SetUDPListenEnabled(bool val)
|
void
在 WeaveMessageLayer 中启用或停用入站 UDP 消息的监听功能。
|
SetUnsecuredConnectionListener(ConnectionReceiveFunct newOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved, bool force, void *listenerState)
|
|
Shutdown(void)
|
|
TCPListenEnabled(void) const
|
bool
检查 WeaveMessageLayer 是否已配置为监听入站 TCP 连接。
|
UDPListenEnabled(void) const
|
bool
检查 WeaveMessageLayer 是否已配置为监听入站 UDP 消息。
|
UnsecuredListenEnabled(void) const
|
bool
启用或停用从临时 UDP 源端口启动 Weave UDP 交换。
|
公共静态函数 |
|
---|---|
GetMaxWeavePayloadSize(const PacketBuffer *msgBuf, bool isUDP, uint32_t udpMTU)
|
uint32_t
获取消息配置和所提供的 PacketBuffer 的最大 Weave 载荷大小。
|
GetPeerDescription(char *buf, size_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, InterfaceId interfaceId, const WeaveConnection *con)
|
void
构造描述对等节点及其关联地址 / 连接信息的字符串。
|
GetPeerDescription(char *buf, size_t bufSize, const WeaveMessageInfo *msgInfo)
|
void
根据与对等设备接收的消息相关联的信息,构建一个描述对等节点的字符串。
|
类 |
|
---|---|
nl:: |
InitContext 类的定义。 |
公共类型
接受错误论坛
void(* AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err)
此函数是一个更高的层回调,用于在处理传入的 TCP 连接期间报告错误。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
回调移除函数
void(* CallbackRemovedFunct)(void *listenerState)
可调用此函数来移除回调。
详情 | |||
---|---|---|---|
参数 |
|
ConnectionReceiveFunct
void(* ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con)
此函数是用于处理传入 TCP 连接的较高层回调。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
MessageLayerActivityChangeHandlerFunct
void(* MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)
此函数是用于报告消息层 Activity 更改的应用回调。
如果有至少 1 个开放式广告交易平台或待处理的消息计数器同步请求,则消息层会被视为有效。
详情 | |||
---|---|---|---|
参数 |
|
消息接收功能
void(* MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
此函数是在收到基于 UDP 的 Weave 消息时调用的较高层回调。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
接收错误信息
void(* ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo)
此函数是在遇到错误时调用的较高层回调。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
状态
State
WeaveMessageLayer 的状态。
属性 | |
---|---|
kState_Initialized
|
初始化 WeaveMessageLayer 时的状态。 |
kState_Initializing
|
当 WeaveMessageLayer 正在初始化时的状态。 |
kState_NotInitialized
|
WeaveMessageLayer 未初始化时的状态。 |
隧道接收消息
void(* TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload)
此函数是通过本地 UDP 隧道收到隧道数据包时调用的更高层回调。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
公共属性
应用状态
void * AppState
指向特定于应用的状态对象的指针。
传入 ConIdleTimeout
uint32_t IncomingConIdleTimeout
传入连接的默认空闲超时(以毫秒为单位)。
伊内特
InetLayer * Inet
[只读] 关联的 InetLayer 对象。
正在聆听
bool IsListening
[只读] 如果监听传入的连接/消息,则为 true,否则为 false。
OnAcceptError
AcceptErrorFunct OnAcceptError
OnConnectionReceived
ConnectionReceiveFunct OnConnectionReceived
OnMessageReceived
MessageReceiveFunct OnMessageReceived
OnReceiveError
ReceiveErrorFunct OnReceiveError
OnUDPTunneledMessageReceived
TunneledMsgReceiveFunct OnUDPTunneledMessageReceived
系统层
System::Layer * SystemLayer
公共函数
clearUnsecuredConnectionListener
WEAVE_ERROR ClearUnsecuredConnectionListener( ConnectionReceiveFunct oldOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved )
关闭端点
WEAVE_ERROR CloseEndpoints( void )
创建隧道
WEAVE_ERROR CreateTunnel( WeaveConnectionTunnel **tunPtr, WeaveConnection & conOne, WeaveConnection & conTwo, uint32_t inactivityTimeoutMS )
通过将两个指定的 WeaveConnection 耦合来创建 WeaveConnectionTunnel。
成功创建后,与组件 WeaveConnection 对象对应的 TCPEndPoints 将传递到 WeaveConnectionTunnel,否则关闭 WeaveConnections。
详情 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
解码标头
WEAVE_ERROR DecodeHeader( PacketBuffer *msgBuf, WeaveMessageInfo *msgInfo, uint8_t **payloadStart )
从收到的 Weave 消息中解码 Weave Message 层标头。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
EncodeMessage
WEAVE_ERROR EncodeMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf, WeaveConnection *con, uint16_t maxLen, uint16_t reserve )
将 WeaveMessageLayer 标头编码到 PacketBuffer 中。
详情 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||||
返回值 |
|
EncodeMessage
WEAVE_ERROR EncodeMessage( const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntId, WeaveMessageInfo *msgInfo, PacketBuffer *payload )
将 Weave Message 层标头编码到 PacketBuffer 中。
详情 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||||||
返回值 |
|
临时 UDPPortEnabled
bool EphemeralUDPPortEnabled( void ) const
检查是否应从临时 UDP 源端口发送本地发起的 Weave UDP 交换。
GetConnectionPoolStats
void GetConnectionPoolStats( nl::Weave::System::Stats::count_t & aOutInUse ) const
获取正在使用的 WeaveConnection 数量和池的大小。
详情 | |||
---|---|---|---|
参数 |
|
Init
WEAVE_ERROR Init( InitContext *context )
初始化 Weave Message 层对象。
详情 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
IsBoundToLocalIPv4Address
bool IsBoundToLocalIPv4Address( void ) const
检查 WeaveMessageLayer 是否已绑定到本地 IPv4 地址。
IsBoundToLocalIPv6Address
bool IsBoundToLocalIPv6Address( void ) const
检查 WeaveMessageLayer 是否绑定到本地 IPv6 地址。
IsMessageLayerActive
bool IsMessageLayerActive( void )
新建连接
WeaveConnection * NewConnection( void )
新连接隧道
WeaveConnectionTunnel * NewConnectionTunnel( void )
重新编码邮件
WEAVE_ERROR ReEncodeMessage( PacketBuffer *buf )
刷新端点
WEAVE_ERROR RefreshEndpoints( void )
根据系统网络接口的当前状态刷新 InetLayer 端点。
详情 | |||||
---|---|---|---|---|---|
返回值 |
|
重新发送信息
WEAVE_ERROR ResendMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
重新发送信息
WEAVE_ERROR ResendMessage( const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
重新发送信息
WEAVE_ERROR ResendMessage( const IPAddress & destAddr, uint16_t destPort, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
详情 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
重新发送信息
WEAVE_ERROR ResendMessage( const IPAddress & destAddr, uint16_t destPort, InterfaceId interfaceId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用底层 Inetlayer UDP 端点重新发送已编码的 Weave 消息。
注意:如果尚未提供目标地址,请尝试根据邮件标头中的节点标识符来确定目标地址。如果无法完成,则会失败。 - 如果目标地址是本地结构的架构结构,且调用方未指定目标节点 ID,请从目标地址中提取目标 ID。
详情 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
发送消息
WEAVE_ERROR SendMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
对底层 Inetlayer UDP 端点进行编码后,发送 Weave 消息。
详情 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
发送消息
WEAVE_ERROR SendMessage( const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
对底层 Inetlayer UDP 端点进行编码后,发送 Weave 消息。
注意:使用的目的地端口是 WEAVE_PORT。- 如果未提供目标地址,请尝试根据邮件标头中的节点标识符来确定。如果无法完成,则会失败。
- 如果目标地址是本地结构的架构结构,且调用方未指定目标节点 ID,请从目标地址中提取目标 ID。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
发送消息
WEAVE_ERROR SendMessage( const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntfId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
对底层 Inetlayer UDP 端点进行编码后,发送 Weave 消息。
注意:如果尚未提供目标地址,请尝试根据邮件标头中的节点标识符来确定目标地址。如果无法完成,则会失败。 - 如果目标地址是本地结构的架构结构,且调用方未指定目标节点 ID,请从目标地址中提取目标 ID。
详情 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||||
返回值 |
|
SendUDPTunneledMessage 类中的方法
WEAVE_ERROR SendUDPTunneledMessage( const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
用于通过本地 UDP 隧道发送隧道数据包的函数。
通过 UDP 发送隧道式 IPv6 数据消息。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
SetSignalMessageLayerActivityChanged
void SetSignalMessageLayerActivityChanged( MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler )
设置在消息层的 Activity 每次发生更改时都会调用的应用处理程序。
具体而言,应用每次都会收到通知:
- 开放式广告交易平台发生变化的次数。
- 待处理邮件计数器同步请求的数量从零更改为至少一个,再变成零。该处理程序将作为一般信号,指示是否有任何正在进行的 Weave 对话或待处理响应。该处理程序必须在初始化 WeaveMessageLayer 之后设置;关闭 WeaveMessageLayer 会清除当前处理程序。
详情 | |||
---|---|---|---|
参数 |
|
||
返回值 |
|
SetTCPListenEnabled
void SetTCPListenEnabled( bool val )
在 WeaveMessageLayer 中启用或停用入站 TCP 连接监听功能。
注意:必须在 TCP 监听状态发生更改后调用 RefreshEndpoints()
。
SetUDPListenEnabled
void SetUDPListenEnabled( bool val )
在 WeaveMessageLayer 中启用或停用入站 UDP 消息的监听功能。
注意:必须在 UDP 监听状态发生变化后调用 RefreshEndpoints()
。
SetUnsecuredConnectionListener
WEAVE_ERROR SetUnsecuredConnectionListener( ConnectionReceiveFunct newOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved, bool force, void *listenerState )
关停
WEAVE_ERROR Shutdown( void )
关闭所有打开的 Inet 层端点,重置所有较高层回调、成员变量和对象。调用 Shutdown() 会终止 WeaveMessageLayer 对象。
UnsecuredListenEnabled
bool UnsecuredListenEnabled( void ) const
启用或停用从临时 UDP 源端口启动 Weave UDP 交换。
注意:临时端口状态发生更改后,必须调用 RefreshEndpoints()
。检查是否已启用不安全的监听。
WeaveMessageLayer
WeaveMessageLayer( void )
Weave Message 层构造函数。
公共静态函数
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const PacketBuffer *msgBuf, bool isUDP, uint32_t udpMTU )
获取消息配置和所提供的 PacketBuffer 的最大 Weave 载荷大小。
返回的最大载荷大小不会超过所提供的 PacketBuffer 内的载荷的可用空间。
如果消息为 UDP,返回的最大载荷大小不会导致 Weave 消息不会溢出指定的 UDP MTU。
最后,返回的最大载荷大小不会导致 Weave 消息超过 Weave 消息大小上限。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
退货 |
Weave 载荷大小上限。
|
GetPeerDescription
void GetPeerDescription( char *buf, size_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, InterfaceId interfaceId, const WeaveConnection *con )
构造描述对等节点及其关联地址 / 连接信息的字符串。
生成的字符串采用以下格式:
([ ]: % , con )
详情 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
GetPeerDescription
void GetPeerDescription( char *buf, size_t bufSize, const WeaveMessageInfo *msgInfo )
根据与对等设备接收的消息相关联的信息,构建一个描述对等节点的字符串。
详情 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|