nl::Weave::Profiles::WeaveTunnel::WeaveTunnelAgent

摘要

建構函式和解構函式

WeaveTunnelAgent(void)

公開類型

AgentState{
  kState_NotInitialized = 0,
  kState_Initialized_NoTunnel = 1,
  kState_PrimaryTunModeEstablished = 2,
  kState_BkupOnlyTunModeEstablished = 3,
  kState_PrimaryAndBkupTunModeEstablished = 4
}
列舉
通道代理程式的狀態(與服務間的連線相關)。
AgentState typedef
通道代理程式的狀態(與服務間的連線相關)。
OnServiceTunnelReconnectNotifyFunct)(TunnelType tunType, const char *reconnectHost, const uint16_t reconnectPort, void *appCtxt) typedef
void(*
從 Service 接收通道重新連線時,由更高層設定的處理常式的函式指標。
OnServiceTunnelStatusNotifyFunct)(WeaveTunnelConnectionMgr::TunnelConnNotifyReasons reason, WEAVE_ERROR err, void *appCtxt) typedef
void(*
由較高層設定的處理常式的函式指標,用於處理與 Service 的通道相關的各種通知。
PlatformNetworkOnlineCheck)(TunnelType tunType, void *appCtxt) typedef
void(*
應用程式為執行網路層級檢查而提供的處理常式的函式指標。
WeaveTunnelFlags{
  kTunnelFlag_PrimaryEnabled = 0x01,
  kTunnelFlag_BackupEnabled = 0x02,
  kTunnelFlag_PrimaryRestricted = 0x04,
  kTunnelFlag_BackupRestricted = 0x08
}
列舉
編織通道標記位元。
WeaveTunnelFlags typedef
編織通道標記位元。

公開屬性

NetworkOnlineCheck
OnServiceTunReconnectNotify
OnServiceTunStatusNotify
由較高層設定的處理常式的函式指標,用於處理與 Service 的通道相關的各種通知。
mServiceMgr
WeaveServiceManager *
用於查詢及連線至 Service 的 Service Manager 指標。

公用函式

DisablePrimaryTunnel(void)
void
停用主要通道。
EnablePrimaryTunnel(void)
void
啟用主要通道。
GetAgentStateName(const AgentState state)
const char *
取得 WeaveTunnelAgentState 名稱。
GetTimeMsec(void)
uint64_t
取得系統時間 (以毫秒為單位)。
GetWeaveTunnelAgentState(void)
取得 TunnelAgent 狀態。
Init(InetLayer *inet, WeaveExchangeManager *exchMgr, uint64_t dstNodeId, WeaveAuthMode authMode, WeaveServiceManager *svcMgr, const char *intfName, uint8_t role, void *appContext)
初始化通道代理程式。
Init(InetLayer *inet, WeaveExchangeManager *exchMgr, uint64_t dstNodeId, IPAddress dstIPAddr, WeaveAuthMode authMode, const char *intfName, uint8_t role, void *appContext)
初始化通道代理程式。
IsPrimaryTunnelEnabled(void) const
bool
檢查主要通道是否已啟用。
IsPrimaryTunnelRoutingRestricted(void)
bool
檢查主要通道是否受到服務的轉送限制所影響。
IsTunnelRoutingRestricted(void)
bool
檢查通道是否受到服務的轉送限制規範。
NetworkOnlineCheckResult(TunnelType tunType, bool isOnline)
void
當網路檢查工具的結果可用時,平台叫用的回呼。
ResetPrimaryReconnectBackoff(bool reconnectImmediately)
重設主要通道的重新連線時間。
SetAuthMode(const WeaveAuthMode authMode)
void
為通道設定 WeaveAuthMode。
SetDestination(const uint64_t nodeId, const IPAddress ipAddr, const uint16_t servicePort)
void
設定通道的目的地 nodeId、IPAddress 和通訊埠。
SetTunnelingDeviceRole(const Role role)
void
設定通道的 Tunneling 裝置角色(BorderGateway、 StandaloneDevice、MobileDevice)。
Shutdown(void)
關閉通道代理程式。
StartServiceTunnel(void)
啟動服務通道。
StartServiceTunnel(uint64_t dstNodeId, IPAddress dstIPAddr, WeaveAuthMode authMode)
啟動服務通道。
StopServiceTunnel(void)
void
關閉與 Service 的通道連線。
StopServiceTunnel(WEAVE_ERROR err)
void
關閉與 Service 的通道連線。

公開的靜態函式

RecvdFromShortcutUDPTunnel(WeaveMessageLayer *msgLayer, PacketBuffer *message)
void
此處理常式可透過此處理常式從邊界閘道和行動裝置之間的捷徑 UDP 通道接收通道 IPv6 封包,並在從通道標頭內部解開原始 IPv6 封包後,轉送至 Tunnel EndPoint 介面。
RecvdFromTunnelEndPoint(TunEndPoint *tunEP, PacketBuffer *message)
void
此處理常式可接收從 Tunnel EndPoint 介面和轉送的 IPv6 封包,並在將 IPv6 封包封裝於通道標頭內部後,透過服務 TCP 連線傳送至服務,或是透過捷徑通道傳送至 Mobile 用戶端。

公開類型

AgentState

 AgentState

通道代理程式的狀態(與服務間的連線相關)。

屬性
kState_BkupOnlyTunModeEstablished

用於表示已建立服務的備份通道。

kState_Initialized_NoTunnel

用來表示通道代理程式已初始化,但尚未建立任何通道。

kState_NotInitialized

用於表示通道代理程式未初始化。

kState_PrimaryAndBkupTunModeEstablished

用於表示主要通道和備用通道已建立。

kState_PrimaryTunModeEstablished

用於表示該服務的主要通道已建立。

AgentState

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelAgent::AgentState AgentState

通道代理程式的狀態(與服務間的連線相關)。

OnServiceTunnelReconnectNotifyFunct

void(* OnServiceTunnelReconnectNotifyFunct)(TunnelType tunType, const char *reconnectHost, const uint16_t reconnectPort, void *appCtxt)

從 Service 接收通道重新連線時,由更高層設定的處理常式的函式指標。

詳細說明
參數
[in] tunType
通道類型:「主要」或「備份」。
[in] reconnectHost
由服務提供重新連線的主機名稱。
[in] reconnectPort
服務為連線而提供的目的地通訊埠。
[in] appCtxt
指向應用程式結構定義物件的指標

OnServiceTunnelStatusNotifyFunct

void(* OnServiceTunnelStatusNotifyFunct)(WeaveTunnelConnectionMgr::TunnelConnNotifyReasons reason, WEAVE_ERROR err, void *appCtxt)

由較高層設定的處理常式的函式指標,用於處理與 Service 的通道相關的各種通知。

詳細說明
參數
[in] reason
傳送狀態通知給申請的原因。
[in] err
發生錯誤 (如果有的話)
[in] appCtxt
指向應用程式結構定義物件的指標

PlatformNetworkOnlineCheck

void(* PlatformNetworkOnlineCheck)(TunnelType tunType, void *appCtxt)

應用程式為執行網路層級檢查而提供的處理常式的函式指標。

詳細說明
參數
[in] tunType
通道類型:「主要」或「備份」。
[in] appCtxt
指向應用程式結構定義物件的指標

WeaveTunnelFlags

 WeaveTunnelFlags

編織通道標記位元。

屬性
kTunnelFlag_BackupEnabled

設定備用通道的啟用時機。

kTunnelFlag_BackupRestricted

在備用通道的轉送限制時設定。

kTunnelFlag_PrimaryEnabled

設定主要通道的啟用時機。

kTunnelFlag_PrimaryRestricted

在主要通道受轉送限制時設定。

WeaveTunnelFlags

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelAgent::WeaveTunnelFlags WeaveTunnelFlags

編織通道標記位元。

公開屬性

NetworkOnlineCheck

PlatformNetworkOnlineCheck NetworkOnlineCheck

OnServiceTunReconnectNotify

OnServiceTunnelReconnectNotifyFunct OnServiceTunReconnectNotify

OnServiceTunStatusNotify

OnServiceTunnelStatusNotifyFunct OnServiceTunStatusNotify

由較高層設定的處理常式的函式指標,用於處理與 Service 的通道相關的各種通知。

mServiceMgr

WeaveServiceManager * mServiceMgr

用於查詢及連線至 Service 的 Service Manager 指標。

公用函式

DisablePrimaryTunnel

void DisablePrimaryTunnel(
  void
)

停用主要通道。

停用主要通道。

EnablePrimaryTunnel

void EnablePrimaryTunnel(
  void
)

啟用主要通道。

啟用主要通道。

GetAgentStateName

const char * GetAgentStateName(
  const AgentState state
)

取得 WeaveTunnelAgentState 名稱。

GetTimeMsec

uint64_t GetTimeMsec(
  void
)

取得系統時間 (以毫秒為單位)。

在系統時間無法使用的情況下取得系統時間或單調時間 (以毫秒為單位)。

GetWeaveTunnelAgentState

AgentState GetWeaveTunnelAgentState(
  void
)

取得 TunnelAgent 狀態。

詳細說明
傳回
AgentState WeaveTunnelAgent 的目前狀態。

Init

WEAVE_ERROR Init(
  InetLayer *inet,
  WeaveExchangeManager *exchMgr,
  uint64_t dstNodeId,
  WeaveAuthMode authMode,
  WeaveServiceManager *svcMgr,
  const char *intfName,
  uint8_t role,
  void *appContext
)

初始化通道代理程式。

這項操作會建立通道端點物件、設定通道介面,以及初始化成員變數、回呼和 WeaveTunnelControl

Init

WEAVE_ERROR Init(
  InetLayer *inet,
  WeaveExchangeManager *exchMgr,
  uint64_t dstNodeId,
  IPAddress dstIPAddr,
  WeaveAuthMode authMode,
  const char *intfName,
  uint8_t role,
  void *appContext
)

初始化通道代理程式。

這項操作會建立通道端點物件、設定通道介面,以及初始化成員變數、回呼和 WeaveTunnelControl

IsPrimaryTunnelEnabled

bool IsPrimaryTunnelEnabled(
  void
) const 

檢查主要通道是否已啟用。

詳細說明
傳回
如果已啟用,則傳回 true,否則為 false。

IsPrimaryTunnelRoutingRestricted

bool IsPrimaryTunnelRoutingRestricted(
  void
)

檢查主要通道是否受到服務的轉送限制所影響。

檢查主要通道是否受到轉送限制的影響。

詳細說明
傳回
如果主要通道已建立,但會受到服務的轉送限制,則為 true。

IsTunnelRoutingRestricted

bool IsTunnelRoutingRestricted(
  void
)

檢查通道是否受到服務的轉送限制規範。

檢查通道是否受到轉送限制的影響。

詳細說明
傳回
如果已建立主要或備用通道,且受到服務的轉送限制所述,則為 true。

NetworkOnlineCheckResult

void NetworkOnlineCheckResult(
  TunnelType tunType,
  bool isOnline
)

當網路檢查工具的結果可用時,平台叫用的回呼。

詳細說明
參數
[in] tunType
與執行網路連線檢查的介面相對應的通道類型。
[in] isOnline
如果網路已連線,則為「true」,否則傳回「false」。

ResetPrimaryReconnectBackoff

WEAVE_ERROR ResetPrimaryReconnectBackoff(
  bool reconnectImmediately
)

重設主要通道的重新連線時間。

詳細說明
參數
[in] reconnectImmediately
如果需要立即重新連線,則為「true」,否則會使用已設定的撤銷逾時。

SetAuthMode

void SetAuthMode(
  const WeaveAuthMode authMode
)

為通道設定 WeaveAuthMode。

詳細說明
參數
[in] authMode
與對等點搭配使用的 Weave 驗證模式。

SetDestination

void SetDestination(
  const uint64_t nodeId,
  const IPAddress ipAddr,
  const uint16_t servicePort
)

設定通道的目的地 nodeId、IPAddress 和通訊埠。

設定通道的目的地 nodeId 和 IPAddress。

詳細說明
參數
[in] nodeId
目的地節點的節點 ID。
[in] ipAddr
目的地節點的 IP 位址
[in] servicePort
目的地節點的通訊埠。

SetTunnelingDeviceRole

void SetTunnelingDeviceRole(
  const Role role
)

設定通道的 Tunneling 裝置角色(BorderGateway、 StandaloneDevice、MobileDevice)。

設定通道的通道裝置角色(BorderGateway 或獨立)。

詳細說明
參數
[in] role
通道代理、邊界閘道、獨立或行動裝置扮演的角色。

關機

WEAVE_ERROR Shutdown(
  void
)

關閉通道代理程式。

這樣在移除與通道介面相關聯的地址和路徑後,就會中斷與 Service 的連線,並關閉 TunEndPoint 介面。

這樣在移除與通道介面相關聯的地址和路徑後,就會中斷與 Service 的連線,並關閉 TunEndPoint 介面。

詳細說明
傳回
處理成功時為 WEAVE_NO_ERROR,或其他對應的 WEAVE_ERROR 類型。

StartServiceTunnel

WEAVE_ERROR StartServiceTunnel(
  void
)

啟動服務通道。

這會啟用通道,並嘗試與 Service 建立連線。

這會嘗試與 Service 建立連線,也會將 FBI 路徑設為通道介面。

詳細說明
傳回
處理成功時為 WEAVE_NO_ERROR,或其他對應的 WEAVE_ERROR 類型。

StartServiceTunnel

WEAVE_ERROR StartServiceTunnel(
  uint64_t dstNodeId,
  IPAddress dstIPAddr,
  WeaveAuthMode authMode
)

啟動服務通道。

這會啟用通道,並嘗試與 Service 建立連線。

StopServiceTunnel

void StopServiceTunnel(
  void
)

關閉與 Service 的通道連線。

StopServiceTunnel

void StopServiceTunnel(
  WEAVE_ERROR err
)

關閉與 Service 的通道連線。

詳細說明
參數
[in] err
如果此 StopServiceTunnel 要求沒有具體原因,就會傳回 WEAVE_NO_ERROR,否則錯誤原因就會傳遞。

WeaveTunnelAgent

 WeaveTunnelAgent(
  void
)

公開的靜態函式

RecvdFromShortcutUDPTunnel

void RecvdFromShortcutUDPTunnel(
  WeaveMessageLayer *msgLayer,
  PacketBuffer *message
)

此處理常式可透過此處理常式從邊界閘道和行動裝置之間的捷徑 UDP 通道接收通道 IPv6 封包,並在從通道標頭內部解開原始 IPv6 封包後,轉送至 Tunnel EndPoint 介面。

此處理常式可透過此處理常式從 Service TCP 連線接收通道 IPv6 封包,並在從通道標頭中解開原始 IPv6 封包後,轉送至 Tunnel EndPoint 介面。

詳細說明
參數
[in] con
指向 WeaveConnection 物件的指標。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] message
指向含有通道 IPv6 封包的 PacketBuffer 物件指標。

RecvdFromTunnelEndPoint

void RecvdFromTunnelEndPoint(
  TunEndPoint *tunEP,
  PacketBuffer *message
)

此處理常式可接收從 Tunnel EndPoint 介面和轉送的 IPv6 封包,並在將 IPv6 封包封裝於通道標頭內部後,透過服務 TCP 連線傳送至服務,或是透過捷徑通道傳送至 Mobile 用戶端。

此處理常式可接收從 Tunnel EndPoint 介面和轉送的 IPv6 封包,並在將 IPv6 封包封裝至通道標頭內部後,或透過本機通道傳送到 Mobile 用戶端,然後透過 Service TCP 連線傳送至服務。

如果尚未建立服務連線,訊息會排入佇列,直到連線設定完成。如果是透過通道與行動裝置用戶端裝置建立通道,參照的下一個躍點相鄰表格。

如果尚未建立服務連線,訊息會排入佇列,直到連線設定完成。如果是透過通道與行動裝置用戶端裝置建立通道,參照的下一個躍點相鄰表格。

詳細說明
參數
[in] tunEP
指向 TunEndPoint 物件的指標。
[in] message
含有原始 IPv6 封包的 PacketBuffer 物件指標。