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
关闭 Service 隧道。
|
SetInterfaceName(const char *intfName)
|
void
为隧道连接设置 InterfaceName。
|
SetInterfaceType(const SrcInterfaceType srcIntfType)
|
void
为隧道连接设置 SrcInterfaceType。
|
Shutdown(void)
|
void
|
StopAndReconnectTunnelConn(ReconnectParam & reconnParam)
|
void
请停止服务隧道连接,然后尝试重新连接。
|
TryConnectingNow(void)
|
尝试与服务建立连接。
|
公共静态函数 |
|
---|---|
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
处理程序从服务 TCP 连接接收隧道式 IPv6 数据包,并在从隧道标头内部解封装原始 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
|
用于表示主 Weave 隧道上的隧道活跃性探测器的相关信息。 |
kStatus_TunPrimaryReconnectRcvd
|
用于表示 Service 已请求重新连接主 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 )
关闭 Service 隧道。
详细信息 | |||
---|---|---|---|
参数 |
|
SetInterfaceName
void SetInterfaceName( const char *intfName )
为隧道连接设置 InterfaceName。
详细信息 | |||
---|---|---|---|
参数 |
|
SetInterfaceType
void SetInterfaceType( const SrcInterfaceType srcIntfType )
为隧道连接设置 SrcInterfaceType。
详细信息 | |||
---|---|---|---|
参数 |
|
StopAndReconnectTunnelConn
void StopAndReconnectTunnelConn( ReconnectParam & reconnParam )
请停止服务隧道连接,然后尝试重新连接。
详细信息 | |||
---|---|---|---|
参数 |
|
WeaveTunnelConnectionMgr
WeaveTunnelConnectionMgr( void )
公共静态函数
DefaultReconnectPolicyCallback
void DefaultReconnectPolicyCallback( void *const appstate, ReconnectParam & reconnectParam, uint32_t & delayMsec )
用于在下次连接到 Service 时提取的默认政策实现。
此政策会按照一个持续到 WEAVE_CONFIG_TUNNELING_RECONNECT_MAX_FIBONACCI_INDEX 的 Fibonacci 序列,在不断增加的窗口中挑选一个随机时隙(采用毫秒级分辨率)。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
HandleServiceConnectionClosed
void HandleServiceConnectionClosed( WeaveConnection *con, WEAVE_ERROR conErr )
服务 TCP 连接关闭时调用的处理程序。
如果 mServiceConKeepAlive 设为 true,设备会尝试重新建立与服务的连接。
随后,设备会尝试重新与服务建立连接。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
HandleServiceConnectionComplete
void HandleServiceConnectionComplete( WeaveConnection *con, WEAVE_ERROR conErr )
服务 TCP 连接完成时调用的处理程序。
接着,设备会通过此功能向本服务发起隧道控制命令。
接着,设备会通过此功能向本服务发起隧道控制命令。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
RecvdFromService
void RecvdFromService( WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *message )
处理程序从服务 TCP 连接接收隧道式 IPv6 数据包,并在从隧道标头内部解封装原始 IPv6 数据包后转发到隧道 EndPoint 接口。
详细信息 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
ServiceMgrStatusHandler
void ServiceMgrStatusHandler( void *appState, WEAVE_ERROR err, StatusReport *report )
如果服务管理器无法与服务建立 TCP 连接,则调用处理程序。