nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr

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

這個類別會封裝所有 Weave 通道連線狀態以及相關的管理邏輯和函式。

摘要

此類別的例項將用於管理每個介面上的通道,而 Weave 通道可能就存在。

建構函式和解構函式

WeaveTunnelConnectionMgr(void)

公開類型

ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec) typedef
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 typedef
TunnelConnectionState{
  kState_NotConnected = 0,
  kState_Connecting = 1,
  kState_ConnectionEstablished = 2,
  kState_TunnelOpen = 3,
  kState_TunnelClosing = 4,
  kState_ReconnectRecvd = 5
}
列舉
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)
嘗試建立與「服務」的連線。

公開的靜態函式

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 封包後,可接收來自 Service TCP 連線的通道 IPv6 封包,並轉送至 Tunnel EndPoint 介面。
ServiceMgrStatusHandler(void *appState, WEAVE_ERROR err, StatusReport *report)
void
如果 Service Manager 無法與 Service 建立 TCP 連線,會叫用處理常式。

公開類型

ConnectPolicyCallback

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

回呼,用於擷取下一個通道重新連線前的等待時間長度。

詳細資料
參數
[in] appState
在 SubscriptionClient 初始化期間設定的應用程式狀態指標。
[in] reconnectParam
結構包含會影響重新連線延遲計算的參數。
[out] delayMsec
下次嘗試重新連線之前,等待的時間 (以毫秒為單位)。

TunnelConnNotifyReasons

 TunnelConnNotifyReasons
屬性
kStatus_TunBackupConnError

用於表示備份通道連線嘗試失敗,或是對等互連已在本機取消或關閉現有通道。

kStatus_TunBackupLiveness

用於表示備份 Weave 通道上的通道有效性探測相關資訊。

kStatus_TunBackupOnlyDown

用於表示備份通道已停止運作。

kStatus_TunBackupReconnectRcvd

用於表示服務已要求重新連線至 Backup Weave 通道。

kStatus_TunBackupUp

用於表示備份 Weave 通道已啟動。

kStatus_TunDown

用於表示 Weave 隧道已關閉。

kStatus_TunFailoverToBackup

用於表示主要通道已停止運作,也已切換至備份通道。

kStatus_TunPrimaryAndBackupUp

用於表示主要和備用 Weave 通道都處於啟用狀態。

kStatus_TunPrimaryConnError

用於表示主要通道連線嘗試失敗,或是對等互連已在本機取消或關閉現有通道。

kStatus_TunPrimaryLiveness

用於表示主要 Weave 隧道上的隧道有效探測器相關資訊。

kStatus_TunPrimaryReconnectRcvd

用於表示服務已要求重新為主要 Weave 通道重新連線。

kStatus_TunPrimaryUp

用於表示主要 Weave 通道已啟動。

TunnelConnNotifyReasons

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

TunnelConnectionState

 TunnelConnectionState
屬性
kState_Connecting

用於表示系統已啟動 Weave 通道連線。

kState_ConnectionEstablished

用於表示已建立 Weave 通道連線,並且正在交換路線資訊。

kState_NotConnected

用於表示 Weave Tunnel 未連線。

kState_ReconnectRecvd

用於表示「服務」要求邊界閘道在目錄查詢後重新連線。

kState_TunnelClosing

用於表示 Weave Tunnel 正在關閉,且連線正在中斷。

kState_TunnelOpen

用於表示 Weave 隧道已開啟,且可進行資料傳輸。

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
)

關閉服務通道。

詳細資料
參數
[in] err
從呼叫端傳入的 WEAVE_ERROR。

SetInterfaceName

void SetInterfaceName(
  const char *intfName
)

設定通道連線的 InterfaceName。

詳細資料
參數
[in] tunIntf
設定服務通道連線的 InterfaceName。

SetInterfaceType

void SetInterfaceType(
  const SrcInterfaceType srcIntfType
)

設定通道連線的 SrcInterfaceType。

詳細資料
參數
[in] srcIntfType
Service 通道連線介面的網路技術類型。

關閉

void Shutdown(
  void
)

StopAndReconnectTunnelConn

void StopAndReconnectTunnelConn(
  ReconnectParam & reconnParam
)

停止服務通道連線,然後嘗試重新連線。

詳細資料
參數
[in] err
從呼叫端傳入的 WEAVE_ERROR。

TryConnectingNow

WEAVE_ERROR TryConnectingNow(
  void
)

嘗試建立與「服務」的連線。

嘗試使用 ServiceManager 或直接建立與 Service 的連線。

WeaveTunnelConnectionMgr

 WeaveTunnelConnectionMgr(
  void
)

公開的靜態函式

DefaultReconnectPolicyCallback

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

下次連線至 Service 時擷取的預設政策實作方式。

這項政策會根據連續 WEAVE_CONFIG_TUNNELING_RECONNECT_MAX_FIBONACCI_INDEX 的夫朗那契序列,隨機挑選以毫秒為單位的隨機時段 (解析度以毫秒為單位)。

詳細資料
參數
[in] appState
在 SubscriptionClient 初始化期間設定的應用程式狀態指標。
[in] reconnectParam
結構包含會影響重新連線延遲計算的參數。
[out] delayMsec
下次嘗試重新連線之前,等待的時間 (以毫秒為單位)。

HandleServiceConnectionClosed

void HandleServiceConnectionClosed(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

服務 TCP 連線關閉時叫用的處理常式。

如果 mServiceConKeepAlive 設為 true,裝置就會嘗試重新建立與服務的連線。

裝置隨後會嘗試重新建立與「服務」的連線。

詳細資料
參數
[in] con
指向 WeaveConnection 物件的指標。
[in] conErr
WeaveConnection 或 WEAVE_NO_ERROR 中的任何錯誤。

HandleServiceConnectionComplete

void HandleServiceConnectionComplete(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

完成服務 TCP 連線時叫用的處理常式。

裝置會繼續利用這個函式對服務啟動 Tunnel 控制指令。

裝置會繼續利用這個函式對服務啟動 Tunnel 控制指令。

詳細資料
參數
[in] con
指向 WeaveConnection 物件的指標。
[in] conErr
WeaveConnection 或 WEAVE_NO_ERROR 中的任何錯誤。

RecvdFromService

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

這個處理常式從通道標頭內部解壓縮原始 IPv6 封包後,可接收來自 Service TCP 連線的通道 IPv6 封包,並轉送至 Tunnel EndPoint 介面。

詳細資料
參數
[in] con
指向 WeaveConnection 物件的指標。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] message
指向保存通道 IPv6 封包的 PacketBuffer 物件指標。

ServiceMgrStatusHandler

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

如果 Service Manager 無法與 Service 建立 TCP 連線,會叫用處理常式。