nl:: Weave:: Profiles:: WeaveTunnel:: WeaveTunnelConnectionMgr
#include <src/lib/profiles/weave-tunneling/WeaveTunnelConnectionMgr.h>
这个类封装了所有 Weave 隧道连接状态以及相关的管理逻辑和功能。
摘要
此类的实例将用于管理通向 Service 的 Weave 隧道所在的每个接口上的隧道。
构造函数和析构函数 |
|
---|---|
WeaveTunnelConnectionMgr(void)
|
公共类型 |
|
---|---|
ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec)
|
typedefvoid(*
用于提取下一次隧道重新连接前的等待时间间隔的回调。 |
TunnelConnNotifyReasons{
|
枚举 |
TunnelConnNotifyReasons
|
typedef |
TunnelConnectionState{
|
枚举 |
TunnelConnectionState
|
typedef |
公共属性 |
|
---|---|
mServiceConnDelayPolicyCallback
|
公共函数 |
|
---|---|
Init(WeaveTunnelAgent *tunAgent, TunnelType tunType, SrcInterfaceType srcIntfType, const char *connIntfName)
|
|
ServiceTunnelClose(WEAVE_ERROR err)
|
void
关闭服务隧道。
|
SetInterfaceName(const char *intfName)
|
void
为隧道连接设置 InterfaceName。
|
SetInterfaceType(const SrcInterfaceType srcIntfType)
|
void
为隧道连接设置 SrcInterfaceType。
|
Shutdown(void)
|
void
|
StopAndReconnectTunnelConn(ReconnectParam & reconnParam)
|
void
停止服务隧道连接并尝试重新连接。
|
TryConnectingNow(void)
|
尝试与 Service 建立连接。
|
公共静态函数 |
|
---|---|
DefaultReconnectPolicyCallback(void *const appstate, ReconnectParam & reconnectParam, uint32_t & delayMsec)
|
void
用于在下次连接到 Service 时进行提取操作的默认政策实现。
|
HandleServiceConnectionClosed(WeaveConnection *con, WEAVE_ERROR conErr)
|
void
关闭服务 TCP 连接时调用的处理程序。
|
HandleServiceConnectionComplete(WeaveConnection *con, WEAVE_ERROR conErr)
|
void
服务 TCP 连接完成时调用的处理程序。
|
RecvdFromService(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *message)
|
void
用于在隧道标头内解封原始 IPv6 数据包后,接收来自服务 TCP 连接的隧道式 IPv6 数据包并转发到隧道 EndPoint 接口的处理程序。
|
ServiceMgrStatusHandler(void *appState, WEAVE_ERROR err, StatusReport *report)
|
void
如果服务管理器未能与服务建立 TCP 连接,则调用处理程序。
|
公共类型
ConnectPolicyCallback
void(* ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec)
用于提取下一次隧道重新连接前的等待时间间隔的回调。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
TunnelConnNotifyReasons
TunnelConnNotifyReasons
属性 | |
---|---|
kStatus_TunBackupConnError
|
用于表示备用隧道连接尝试失败,或现有连接尝试在本地取消或被对等方关闭。 |
kStatus_TunBackupLiveness
|
用于指示 Backup Weave 隧道上的隧道活跃性探测相关信息。 |
kStatus_TunBackupOnlyDown
|
用于表示备用隧道已关闭。 |
kStatus_TunBackupReconnectRcvd
|
用于表示 Service 已请求重新连接 Backup Weave 隧道。 |
kStatus_TunBackupUp
|
用于指示 Backup Weave 隧道已启动。 |
kStatus_TunDown
|
用于指示 Weave 隧道已经关闭。 |
kStatus_TunFailoverToBackup
|
用于表示主隧道已关闭且已切换到备用隧道。 |
kStatus_TunPrimaryAndBackupUp
|
用于表示主 Weave 隧道和备用 Weave 隧道均已开启。 |
kStatus_TunPrimaryConnError
|
用于表示主要隧道连接尝试失败,或现有隧道连接尝试在本地取消或被对等方关闭。 |
kStatus_TunPrimaryLiveness
|
用于指示 Primary Weave 隧道上的隧道活跃性探测信息。 |
kStatus_TunPrimaryReconnectRcvd
|
用于表示服务已请求重新连接主 Weave 隧道。 |
kStatus_TunPrimaryUp
|
用于指示主 Weave 隧道已经启动。 |
TunnelConnNotifyReasons
enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr::TunnelConnNotifyReasons TunnelConnNotifyReasons
TunnelConnectionState
TunnelConnectionState
属性 | |
---|---|
kState_Connecting
|
用于表明 Weave Tunnel 连接已启动。 |
kState_ConnectionEstablished
|
用于指示已建立 Weave Tunnel 连接并交换路线信息。 |
kState_NotConnected
|
用于指明 Weave Tunnel 未连接。 |
kState_ReconnectRecvd
|
用于表明服务希望在目录查询后重新连接边界网关。 |
kState_TunnelClosing
|
用于表示 Weave Tunnel 正在关闭并且连接正在断开。 |
kState_TunnelOpen
|
用于表明 Weave Tunnel 已打开且已准备好用于数据传输。 |
TunnelConnectionState
enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr::TunnelConnectionState TunnelConnectionState
公共属性
mServiceConnDelayPolicyCallback
ConnectPolicyCallback mServiceConnDelayPolicyCallback
公共函数
Init
WEAVE_ERROR Init( WeaveTunnelAgent *tunAgent, TunnelType tunType, SrcInterfaceType srcIntfType, const char *connIntfName )
ServiceTunnelClose
void ServiceTunnelClose( WEAVE_ERROR err )
关闭服务隧道。
具体说明 | |||
---|---|---|---|
参数 |
|
SetInterfaceName
void SetInterfaceName( const char *intfName )
为隧道连接设置 InterfaceName。
具体说明 | |||
---|---|---|---|
参数 |
|
SetInterfaceType
void SetInterfaceType( const SrcInterfaceType srcIntfType )
为隧道连接设置 SrcInterfaceType。
具体说明 | |||
---|---|---|---|
参数 |
|
StopAndReconnectTunnelConn
void StopAndReconnectTunnelConn( ReconnectParam & reconnParam )
停止服务隧道连接并尝试重新连接。
具体说明 | |||
---|---|---|---|
参数 |
|
TryConnectingNow
WEAVE_ERROR TryConnectingNow( void )
尝试与 Service 建立连接。
尝试使用 ServiceManager 或直接与 Service 建立连接。
WeaveTunnelConnectionMgr
WeaveTunnelConnectionMgr( void )
公共静态函数
DefaultReconnectPolicyCallback
void DefaultReconnectPolicyCallback( void *const appstate, ReconnectParam & reconnectParam, uint32_t & delayMsec )
用于在下次连接到 Service 时进行提取操作的默认政策实现。
此政策会遵循一个斐波那契序列(一直到 WEAVE_CONFIG_TUNNELING_RECONNECT_MAX_FIBONACCI_INDEX),在递增的时间范围内随机选择一个时段(分辨率为毫秒)。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
HandleServiceConnectionClosed
void HandleServiceConnectionClosed( WeaveConnection *con, WEAVE_ERROR conErr )
关闭服务 TCP 连接时调用的处理程序。
如果 mServiceConKeepAlive 设置为 true,设备将尝试重新建立与 Service 的连接。
随后,设备会尝试重新建立与 Service 的连接。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
HandleServiceConnectionComplete
void HandleServiceConnectionComplete( WeaveConnection *con, WEAVE_ERROR conErr )
服务 TCP 连接完成时调用的处理程序。
设备会继续通过该功能向 Service 启动隧道控制命令。
设备会继续通过该功能向 Service 启动隧道控制命令。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
RecvdFromService
void RecvdFromService( WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *message )
用于在隧道标头内解封原始 IPv6 数据包后,接收来自服务 TCP 连接的隧道式 IPv6 数据包并转发到隧道 EndPoint 接口的处理程序。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
ServiceMgrStatusHandler
void ServiceMgrStatusHandler( void *appState, WEAVE_ERROR err, StatusReport *report )
如果服务管理器未能与服务建立 TCP 连接,则调用处理程序。