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 收到 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
}
枚举
编织隧道旗帜。
WeaveTunnelFlags typedef
编织隧道旗帜。

公共属性

NetworkOnlineCheck
OnServiceTunReconnectNotify
OnServiceTunStatusNotify
指向由更高层设置的处理程序的函数指针,用于处理与服务隧道相关的各种通知。
mServiceMgr
WeaveServiceManager *
用于查找和连接到服务的服务管理器指针。

公共函数

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
为隧道设置隧道设备角色(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
处理程序在从隧道标头内部解封装原始 IPv6 数据包后,通过边界网关和移动设备之间的快捷方式 UDP 隧道接收隧道式 IPv6 数据包,并转发到隧道端点接口。
RecvdFromTunnelEndPoint(TunEndPoint *tunEP, PacketBuffer *message)
void
处理程序从隧道端点接收 IPv6 数据包并转发,然后通过服务 TCP 连接将 IPv6 数据包封装在隧道标头内并转发到服务,或者通过快捷方式隧道转发到移动客户端。

公共类型

AgentState

 AgentState

隧道代理与本服务的关联的状态。

属性
kState_BkupOnlyTunModeEstablished

用于表示已建立连接到 Service 的备份隧道。

kState_Initialized_NoTunnel

用于表示隧道代理已初始化,但尚未建立任何隧道。

kState_NotInitialized

用于表示隧道代理未初始化。

kState_PrimaryAndBkupTunModeEstablished

用于表示已建立主隧道和备用隧道。

kState_PrimaryTunModeEstablished

用于表示 Service 的主隧道已建立。

AgentState

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

隧道代理与本服务的关联的状态。

OnServiceTunnelReconnectNotifyFunct

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

从 Service 收到 Tunnel Reconnect 时,指向由更高层设置的处理程序的函数指针。

详细信息
参数
[in] tunType
隧道类型,包括“主要”或“备用”。
[in] reconnectHost
Service 提供的要重新连接的主机名。
[in] reconnectPort
Service 提供的要重新连接的目标端口。
[in] appCtxt
指向应用上下文对象的指针

OnServiceTunnelStatusNotifyFunct

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

指向由更高层设置的处理程序的函数指针,用于处理与服务隧道相关的各种通知。

详细信息
参数
[in] reason
向应用发出状态通知的原因。
[in] err
遇到 Weave 错误(如果有)
[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

用于查找和连接到服务的服务管理器指针。

公共函数

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
)

为隧道设置隧道设备角色(BorderGateway、StandaloneDevice、MobileDevice)。

为隧道设置隧道设备角色(BorderGateway 与 Standalone)。

详细信息
参数
[in] role
Tunnel Agent 担任的角色;边界网关、独立或移动设备。

关停

WEAVE_ERROR Shutdown(
  void
)

关停隧道代理。

此操作会在移除与隧道接口关联的地址和路由后,断开与 Service 的连接,并关闭 TunEndPoint 接口。

此操作会在移除与隧道接口关联的地址和路由后,断开与 Service 的连接,并关闭 TunEndPoint 接口。

详细信息
返回值
WEAVE_NO_ERROR 表示成功,否则为相应的 WEAVE_ERROR 类型。

StartServiceTunnel

WEAVE_ERROR StartServiceTunnel(
  void
)

启动服务隧道。

这将启用隧道并尝试与 Service 建立连接。

这将尝试与 Service 建立连接,并设置通向隧道接口的结构路由。

详细信息
返回值
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
WEAVE_NO_ERROR(如果此 StopServiceTunnel 请求无具体原因),否则会传递错误原因。

WeaveTunnelAgent

 WeaveTunnelAgent(
  void
)

公共静态函数

RecvdFromShortcutUDPTunnel

void RecvdFromShortcutUDPTunnel(
  WeaveMessageLayer *msgLayer,
  PacketBuffer *message
)

处理程序在从隧道标头内部解封装原始 IPv6 数据包后,通过边界网关和移动设备之间的快捷方式 UDP 隧道接收隧道式 IPv6 数据包,并转发到隧道端点接口。

处理程序从服务 TCP 连接接收隧道式 IPv6 数据包,并在从隧道标头内部解封装原始 IPv6 数据包后转发到隧道 EndPoint 接口。

详细信息
参数
[in] con
指向 WeaveConnection 对象的指针。
[in] msgInfo
指向 WeaveMessageInfo 对象的指针。
[in] message
指向保存隧道式 IPv6 数据包的 PacketBuffer 对象的指针。

RecvdFromTunnelEndPoint

void RecvdFromTunnelEndPoint(
  TunEndPoint *tunEP,
  PacketBuffer *message
)

处理程序从隧道端点接收 IPv6 数据包并转发,然后通过服务 TCP 连接将 IPv6 数据包封装在隧道标头内并转发到服务,或者通过快捷方式隧道转发到移动客户端。

处理程序从隧道端点接收 IPv6 数据包并转发,然后通过服务 TCP 连接将 IPv6 数据包封装在隧道标头内并转发到服务,或者通过本地隧道转发到移动客户端。

如果 Service 连接尚未建立,消息会排入队列,直到连接建立。对于连接到移动客户端设备的隧道,会引用下一个跃点邻居表。

如果 Service 连接尚未建立,消息会排入队列,直到连接建立。对于连接到移动客户端设备的隧道,会引用下一个跃点相邻表。

详细信息
参数
[in] tunEP
指向 TunEndPoint 对象的指针。
[in] message
指向保存原始 IPv6 数据包的 PacketBuffer 对象的指针。