NL::编织::简介::编织隧道::编织隧道连接管理器

#include <src/lib/profiles/weave-tunneling/WeaveTunnelConnectionMgr.h>

该类封装了所有 Weave 隧道连接状态以及相关的管理逻辑和功能。

概括

此类的一个实例将用于管理每个接口上的隧道,通过这些接口可以存在通往服务的 Weave 隧道。

构造函数和析构函数

WeaveTunnelConnectionMgr (void)

公共类型

ConnectPolicyCallback )(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec)类型定义
void(*
回调以获取在下一个隧道重新连接之前等待的时间间隔。
TunnelConnNotifyReasons {
kStatus_TunDown = 0,
kStatus_TunPrimaryUp = 1,
kStatus_TunPrimaryConnError = 2,
kStatus_TunBackupConnError = 3,
kStatus_TunFailoverToBackup = 4,
kStatus_TunBackupOnlyDown = 5,
kStatus_TunBackupUp = 6,
kStatus_TunPrimaryAndBackupUp = 7,
kStatus_TunPrimaryReconnectRcvd = 8,
kStatus_TunBackupReconnectRcvd = 9,
kStatus_TunPrimaryLiveness = 10,
kStatus_TunBackupLiveness = 11
}
枚举
TunnelConnNotifyReasons类型定义
TunnelConnectionState {
kState_NotConnected = 0,
kState_Connecting = 1,
kState_ConnectionEstablished = 2,
kState_TunnelOpen = 3,
kState_TunnelClosing = 4,
kState_ReconnectRecvd = 5
}
枚举
TunnelConnectionState类型定义

公共属性

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)
尝试建立与服务的连接。

公共静态函数

DefaultReconnectPolicyCallback (void *const appstate, ReconnectParam & reconnectParam, uint32_t & delayMsec)
void
用于获取下次连接到服务的默认策略实现。
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 数据包后转发到隧道端点接口。
ServiceMgrStatusHandler (void *appState, WEAVE_ERROR err, StatusReport *report)
void
如果服务管理器未能建立到服务的 TCP 连接,则调用处理程序。

公共类型

连接策略回调

void(* ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec)

回调以获取在下一个隧道重新连接之前等待的时间间隔。

细节
参数
[in] appState
在 SubscriptionClient 初始化期间设置的应用程序状态指针。
[in] reconnectParam
具有影响重新连接延迟计算的参数的结构。
[out] delayMsec
在下一次重新连接尝试之前等待的时间(以毫秒为单位)。

TunnelConnNotifyReasons

 TunnelConnNotifyReasons
特性
kStatus_TunBackupConnError

用于指示备份隧道连接尝试失败或现有连接尝试在本地中止或被对等方关闭。

kStatus_TunBackupLiveness

用于指示有关 Backup Weave 隧道上的 Tunnel Liveness 探针的信息。

kStatus_TunBackupOnlyDown

用于指示备份隧道已关闭。

kStatus_TunBackupReconnectRcvd

用于指示服务已请求重新连接 Backup Weave 隧道。

kStatus_TunBackupUp

用于指示 Backup Weave 隧道已启动。

kStatus_TunDown

用于表示 Weave 隧道已关闭。

kStatus_TunFailoverToBackup

用于指示主隧道已关闭并已切换到备份隧道。

kStatus_TunPrimaryAndBackupUp

用于指示主和备份 Weave 隧道都已启动。

kStatus_TunPrimaryConnError

用于指示主隧道连接尝试失败或现有连接尝试在本地被对等方中止或关闭。

kStatus_TunPrimaryLiveness

用于指示有关 Primary Weave 隧道上的 Tunnel Liveness 探针的信息。

kStatus_TunPrimaryReconnectRcvd

用于指示服务已请求重新连接 Primary Weave 隧道。

kStatus_TunPrimaryUp

用于指示主 Weave 隧道已启动。

TunnelConnNotifyReasons

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr::TunnelConnNotifyReasons TunnelConnNotifyReasons

隧道连接状态

 TunnelConnectionState
特性
kState_Connecting

用于指示 Weave Tunnel 连接已启动。

kState_ConnectionEstablished

用于指示 Weave Tunnel 连接已建立,正在交换路由信息。

kState_NotConnected

用于指示 Weave Tunnel 未连接。

kState_ReconnectRecvd

用于指示服务希望边界网关在目录查找后重新连接。

kState_TunnelClosing

用于指示 Weave Tunnel 正在关闭并且连接正在断开。

kState_TunnelOpen

用于指示 Weave Tunnel 已打开并准备好进行数据流量传输。

隧道连接状态

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr::TunnelConnectionState TunnelConnectionState

公共属性

mServiceConnDelayPolicyCallback

ConnectPolicyCallback mServiceConnDelayPolicyCallback

公共职能

在里面

WEAVE_ERROR Init(
  WeaveTunnelAgent *tunAgent,
  TunnelType tunType,
  SrcInterfaceType srcIntfType,
  const char *connIntfName
)

服务隧道关闭

void ServiceTunnelClose(
  WEAVE_ERROR err
)

关闭服务隧道。

细节
参数
[in] err
从调用者传入的 WEAVE_ERROR。

设置接口名称

void SetInterfaceName(
  const char *intfName
)

为隧道连接设置 InterfaceName。

细节
参数
[in] tunIntf
用于设置服务隧道连接的 InterfaceName。

设置接口类型

void SetInterfaceType(
  const SrcInterfaceType srcIntfType
)

为隧道连接设置 SrcInterfaceType。

细节
参数
[in] srcIntfType
服务隧道连接接口的网络技术类型。

关掉

void Shutdown(
  void
)

StopAndReconnectTunnelConn

void StopAndReconnectTunnelConn(
  ReconnectParam & reconnParam
)

停止服务隧道连接并再次尝试重新连接。

细节
参数
[in] err
从调用方传入的 WEAVE_ERROR。

立即尝试连接

WEAVE_ERROR TryConnectingNow(
  void
)

尝试建立与服务的连接。

尝试使用 ServiceManager 或直接建立与服务的连接。

编织隧道连接管理器

 WeaveTunnelConnectionMgr(
  void
)

公共静态函数

DefaultReconnectPolicyCallback

void DefaultReconnectPolicyCallback(
  void *const appstate,
  ReconnectParam & reconnectParam,
  uint32_t & delayMsec
)

用于获取下次连接到服务的默认策略实现。

此策略在递增的窗口上选择一个随机时隙(具有毫秒分辨率),遵循高达 WEAVE_CONFIG_TUNNELING_RECONNECT_MAX_FIBONACCI_INDEX 的斐波那契数列。

细节
参数
[in] appState
在 SubscriptionClient 初始化期间设置的应用程序状态指针。
[in] reconnectParam
具有影响重新连接延迟计算的参数的结构。
[out] delayMsec
在下一次重新连接尝试之前等待的时间(以毫秒为单位)。

处理服务连接关闭

void HandleServiceConnectionClosed(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

服务 TCP 连接关闭时调用的处理程序。

如果 mServiceConKeepAlive 设置为 true,设备将尝试重新建立与服务的连接。

随后,设备会尝试重新建立与服务的连接。

细节
参数
[in] con
的指针WeaveConnection对象。
[in] conErr
在中的任何错误WeaveConnection或WEAVE_NO_ERROR。

处理服务连接完成

void HandleServiceConnectionComplete(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

服务 TCP 连接完成时调用的处理程序。

设备继续从该功能向服务发起隧道控制命令。

设备继续从该功能向服务发起隧道控制命令。

细节
参数
[in] con
的指针WeaveConnection对象。
[in] conErr
在中的任何错误WeaveConnection或WEAVE_NO_ERROR。

从服务接收

void RecvdFromService(
  WeaveConnection *con,
  const WeaveMessageInfo *msgInfo,
  PacketBuffer *message
)

处理程序从服务 TCP 连接接收隧道 IPv6 数据包,并在从隧道标头内部解封装原始 IPv6 数据包后转发到隧道端点接口。

细节
参数
[in] con
的指针WeaveConnection对象。
[in] msgInfo
的指针WeaveMessageInfo对象。
[in] message
指向保存隧道 IPv6 数据包的 PacketBuffer 对象的指针。

ServiceMgrStatusHandler

void ServiceMgrStatusHandler(
  void *appState,
  WEAVE_ERROR err,
  StatusReport *report
)

如果服务管理器未能建立到服务的 TCP 连接,则调用处理程序。