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
此處理常式可透過此處理常式從 Service TCP 連線接收通道 IPv6 封包,並在從通道標頭中解開原始 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

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

kStatus_TunBackupUp

用於表示「備份武器」通道已啟動。

kStatus_TunDown

用於表示 Weave 通道已中斷。

kStatus_TunFailoverToBackup

用於表示主要通道已停止運作,並已切換到備用通道。

kStatus_TunPrimaryAndBackupUp

用於表示 Primary 和備用 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 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
)

關閉服務通道。

詳細說明
參數
[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 或直接連線至服務。

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 連線完成時叫用處理常式。

裝置會從這個函式開始向 Service 啟動通道控制指令。

裝置會從這個函式開始向 Service 啟動通道控制指令。

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

RecvdFromService

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

此處理常式可透過此處理常式從 Service TCP 連線接收通道 IPv6 封包,並在從通道標頭中解開原始 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 連線,就會叫用處理常式。