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)
|
typedefvoid(*
回呼,用於擷取下一個通道重新連線前的等待時間長度。 |
TunnelConnNotifyReasons{
|
列舉 |
TunnelConnNotifyReasons
|
typedef |
TunnelConnectionState{
|
列舉 |
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)
回呼,用於擷取下一個通道重新連線前的等待時間長度。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
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 )
關閉服務通道。
詳細資料 | |||
---|---|---|---|
參數 |
|
SetInterfaceName
void SetInterfaceName( const char *intfName )
設定通道連線的 InterfaceName。
詳細資料 | |||
---|---|---|---|
參數 |
|
SetInterfaceType
void SetInterfaceType( const SrcInterfaceType srcIntfType )
設定通道連線的 SrcInterfaceType。
詳細資料 | |||
---|---|---|---|
參數 |
|
StopAndReconnectTunnelConn
void StopAndReconnectTunnelConn( ReconnectParam & reconnParam )
停止服務通道連線,然後嘗試重新連線。
詳細資料 | |||
---|---|---|---|
參數 |
|
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 的夫朗那契序列,隨機挑選以毫秒為單位的隨機時段 (解析度以毫秒為單位)。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
HandleServiceConnectionClosed
void HandleServiceConnectionClosed( WeaveConnection *con, WEAVE_ERROR conErr )
服務 TCP 連線關閉時叫用的處理常式。
如果 mServiceConKeepAlive 設為 true,裝置就會嘗試重新建立與服務的連線。
裝置隨後會嘗試重新建立與「服務」的連線。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
HandleServiceConnectionComplete
void HandleServiceConnectionComplete( WeaveConnection *con, WEAVE_ERROR conErr )
完成服務 TCP 連線時叫用的處理常式。
裝置會繼續利用這個函式對服務啟動 Tunnel 控制指令。
裝置會繼續利用這個函式對服務啟動 Tunnel 控制指令。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
RecvdFromService
void RecvdFromService( WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *message )
這個處理常式從通道標頭內部解壓縮原始 IPv6 封包後,可接收來自 Service TCP 連線的通道 IPv6 封包,並轉送至 Tunnel EndPoint 介面。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
ServiceMgrStatusHandler
void ServiceMgrStatusHandler( void *appState, WEAVE_ERROR err, StatusReport *report )
如果 Service Manager 無法與 Service 建立 TCP 連線,會叫用處理常式。