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(*
從服務收到 Tunnel Reconnect 時,套用至較高層設定的處理常式的函式指標。
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
}
列舉
Weave Tunnel 標記位元。
WeaveTunnelFlags typedef
Weave Tunnel 標記位元。

公開屬性

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

公開函式

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)
初始化 Tunnel 代理程式。
Init(InetLayer *inet, WeaveExchangeManager *exchMgr, uint64_t dstNodeId, IPAddress dstIPAddr, WeaveAuthMode authMode, const char *intfName, uint8_t role, void *appContext)
初始化 Tunnel 代理程式。
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
設定 Tunnel 的 Tunneling 裝置角色(BorderGateway、獨立裝置、MobileDevice)。
Shutdown(void)
關閉通道代理程式。
StartServiceTunnel(void)
啟動服務通道。
StartServiceTunnel(uint64_t dstNodeId, IPAddress dstIPAddr, WeaveAuthMode authMode)
啟動服務通道。
StopServiceTunnel(void)
void
關閉與服務的通道連線。
StopServiceTunnel(WEAVE_ERROR err)
void
關閉與服務的通道連線。

公開的靜態函式

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

公開類型

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)

從服務收到 Tunnel Reconnect 時,套用至較高層設定的處理常式的函式指標。

詳細資料
參數
[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

Weave Tunnel 標記位元。

屬性
kTunnelFlag_BackupEnabled

在啟用備份通道時設定。

kTunnelFlag_BackupRestricted

在備份通道受到轉送限制時設定。

kTunnelFlag_PrimaryEnabled

在啟用主要通道時設定。

kTunnelFlag_PrimaryRestricted

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

WeaveTunnelFlags

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

Weave Tunnel 標記位元。

公開屬性

NetworkOnlineCheck

PlatformNetworkOnlineCheck NetworkOnlineCheck

OnServiceTunReconnectNotify

OnServiceTunnelReconnectNotifyFunct OnServiceTunReconnectNotify

OnServiceTunStatusNotify

OnServiceTunnelStatusNotifyFunct OnServiceTunStatusNotify

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

mServiceMgr

WeaveServiceManager * mServiceMgr

用於查詢和連線至 Service 的服務管理工具指標。

公開函式

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 狀態。

詳細資料
傳回
代理程式說明 WeaveTunnelAgent 的目前狀態。

Init

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

初始化 Tunnel 代理程式。

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

Init

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

初始化 Tunnel 代理程式。

這項操作會建立 te Tunnel 端點物件,設定通道介面、初始化成員變數、回呼和 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
與對等點搭配使用的編織驗證模式。

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
)

設定 Tunnel 的 Tunneling 裝置角色(BorderGateway、獨立裝置、MobileDevice)。

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

詳細資料
參數
[in] role
通道代理程式假設的角色;邊界閘道、獨立或行動裝置。

關閉

WEAVE_ERROR Shutdown(
  void
)

關閉通道代理程式。

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

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

詳細資料
傳回
成功時 WEAVE_NO_ERROR,否則會對應 WEAVE_ERROR 類型。

StartServiceTunnel

WEAVE_ERROR StartServiceTunnel(
  void
)

啟動服務通道。

這會啟用通道並嘗試建立與服務的連線。

這會嘗試連線至服務,也會設定前往通道介面的布料路徑。

詳細資料
傳回
成功時 WEAVE_NO_ERROR,否則會對應 WEAVE_ERROR 類型。

StartServiceTunnel

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

啟動服務通道。

這會啟用通道並嘗試建立與服務的連線。

StopServiceTunnel

void StopServiceTunnel(
  void
)

關閉與服務的通道連線。

StopServiceTunnel

void StopServiceTunnel(
  WEAVE_ERROR err
)

關閉與服務的通道連線。

詳細資料
參數
[in] err
如果沒有此 StopServiceTunnel 要求的特定原因,則傳回 WEAVE_NO_ERROR,否則錯誤原因就會向下傳遞。

WeaveTunnelAgent

 WeaveTunnelAgent(
  void
)

公開的靜態函式

RecvdFromShortcutUDPTunnel

void RecvdFromShortcutUDPTunnel(
  WeaveMessageLayer *msgLayer,
  PacketBuffer *message
)

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

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

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

RecvdFromTunnelEndPoint

void RecvdFromTunnelEndPoint(
  TunEndPoint *tunEP,
  PacketBuffer *message
)

在通道標頭中封裝 IPv6 封包後,用於接收從 Tunnel EndPoint 介面接收 IPv6 封包並轉送至服務的處理常式,以及在通道標頭中封裝 IPv6 封包,或是透過快速通道傳送至行動裝置用戶端。

在通道標頭中封裝 IPv6 封包後,用於接收從 Tunnel EndPoint 介面接收 IPv6 封包並轉送至服務的處理常式,以及在通道標頭中封裝 IPv6 封包,或透過本機通道接收行動用戶端。

如果尚未設定服務連線,訊息會排入佇列,直到連線設定完成為止。針對通道連至行動裝置用戶端裝置,請參考下一個躍點資料表。

如果尚未設定服務連線,訊息會排入佇列,直到連線設定完成為止。針對通道連至行動裝置用戶端裝置,請參考下一個躍點資料表。

詳細資料
參數
[in] tunEP
TunEndPoint 物件的指標。
[in] message
存放原始 IPv6 封包的 PacketBuffer 物件指標。