透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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 連接,則調用處理程序。