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
}
枚举
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)
初始化隧道代理。
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 的 Tunnel 连接。
StopServiceTunnel(WEAVE_ERROR err)
void
关闭与 Service 的 Tunnel 连接。

公共静态函数

RecvdFromShortcutUDPTunnel(WeaveMessageLayer *msgLayer, PacketBuffer *message)
void
处理程序,用于通过边界网关和移动设备之间的快捷方式 UDP 隧道接收隧道式 IPv6 数据包,并在从隧道标头内解封原始 IPv6 数据包后转发到隧道端点接口。
RecvdFromTunnelEndPoint(TunEndPoint *tunEP, PacketBuffer *message)
void
用于处理来自 Tunnel EndPoint 接口的 IPv6 数据包并转发的处理程序,包含在隧道标头内封装 IPv6 数据包后通过服务 TCP 连接传送到服务,或通过快捷方式隧道传送到移动客户端。

公共类型

AgentState

 AgentState

隧道代理与服务的连接状态。

属性
kState_BkupOnlyTunModeEstablished

用于指示已建立指向服务的备份隧道。

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 收到隧道重新连接时,指向较高层设置的处理程序的函数指针。

具体说明
参数
[in] tunType
隧道类型:“主要”或“备用”。
[in] reconnectHost
服务提供的要重新连接的主机名。
[in] reconnectPort
由 Service 提供的要重新连接到的目标端口。
[in] appCtxt
指向应用上下文对象的指针

OnServiceTunnelStatusNotifyFunct

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

指向处理程序的函数指针,由较高层设置,用于对与连接到 Service 的隧道相关的各种通知执行操作。

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

具体说明
返回值
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 与独立)。

具体说明
参数
[in] role
角色由隧道代理负责;边界网关、独立设备或移动设备。

关停

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 的 Tunnel 连接。

StopServiceTunnel

void StopServiceTunnel(
  WEAVE_ERROR err
)

关闭与 Service 的 Tunnel 连接。

具体说明
参数
[in] err
WEAVE_NO_ERROR,如果 StopServiceTunnel 请求没有具体原因,否则将传递错误原因。

WeaveTunnelAgent

 WeaveTunnelAgent(
  void
)

公共静态函数

RecvdFromShortcutUDPTunnel

void RecvdFromShortcutUDPTunnel(
  WeaveMessageLayer *msgLayer,
  PacketBuffer *message
)

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

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

具体说明
参数
[in] con
指向 WeaveConnection 对象的指针。
[in] msgInfo
指向 WeaveMessageInfo 对象的指针。
[in] message
指向包含隧道式 IPv6 数据包的 PacketBuffer 对象的指针。

RecvdFromTunnelEndPoint

void RecvdFromTunnelEndPoint(
  TunEndPoint *tunEP,
  PacketBuffer *message
)

用于处理来自 Tunnel EndPoint 接口的 IPv6 数据包并转发的处理程序,包含在隧道标头内封装 IPv6 数据包后通过服务 TCP 连接传送到服务,或通过快捷方式隧道传送到移动客户端。

用于处理来自 Tunnel EndPoint 接口的 IPv6 数据包并转发的处理程序,这些数据包会在隧道标头内封装 IPv6 数据包后通过服务 TCP 连接传送到服务,或通过本地隧道传送到移动客户端。

如果服务连接尚未建立,则消息会排队等待,直到连接建立为止。对于连接到移动客户端设备的隧道,系统会引用下一个跃点相邻表。

如果服务连接尚未建立,则消息会排队等待,直到连接建立为止。对于连接到移动客户端设备的隧道,系统会引用下一个跃点相邻表。

具体说明
参数
[in] tunEP
指向 TunEndPoint 对象的指针。
[in] message
指向存放原始 IPv6 数据包的 PacketBuffer 对象的指针。