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 連線,會叫用處理常式。