nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr

#include <src/lib/profiles/weave-tunneling/WeaveTunnelConnectionMgr.h>

このクラスは、すべての Weave トンネルの接続状態と、関連する管理ロジックおよび関数をカプセル化します。

概要

このクラスのインスタンスは、Service への Weave トンネルが存在する各インターフェースでトンネルを管理するために使用されます。

コンストラクタとデストラクタ

WeaveTunnelConnectionMgr(void)

公開タイプ

ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec) typedef
void(*
次のトンネルが再接続するまでの待機時間を取得するコールバック。
TunnelConnNotifyReasons{
  kStatus_TunDown = 0,
  kStatus_TunPrimaryUp = 1,
  kStatus_TunPrimaryConnError = 2,
  kStatus_TunBackupConnError = 3,
  kStatus_TunFailoverToBackup = 4,
  kStatus_TunBackupOnlyDown = 5,
  kStatus_TunBackupUp = 6,
  kStatus_TunPrimaryAndBackupUp = 7,
  kStatus_TunPrimaryReconnectRcvd = 8,
  kStatus_TunBackupReconnectRcvd = 9,
  kStatus_TunPrimaryLiveness = 10,
  kStatus_TunBackupLiveness = 11
}
enum
TunnelConnNotifyReasons typedef
TunnelConnectionState{
  kState_NotConnected = 0,
  kState_Connecting = 1,
  kState_ConnectionEstablished = 2,
  kState_TunnelOpen = 3,
  kState_TunnelClosing = 4,
  kState_ReconnectRecvd = 5
}
enum
TunnelConnectionState typedef

パブリック属性

mServiceConnDelayPolicyCallback

パブリック関数

Init(WeaveTunnelAgent *tunAgent, TunnelType tunType, SrcInterfaceType srcIntfType, const char *connIntfName)
WeaveTunnelConnectionMgr を初期化します。
ServiceTunnelClose(WEAVE_ERROR err)
void
Service トンネルを閉じます。
SetInterfaceName(const char *intfName)
void
Tunnel 接続の InterfaceName を設定します。
SetInterfaceType(const SrcInterfaceType srcIntfType)
void
トンネル接続の SrcInterfaceType を設定。
Shutdown(void)
void
WeaveTunnelConnectionMgr をシャットダウンします。
StopAndReconnectTunnelConn(ReconnectParam & reconnParam)
void
サービス トンネル接続を停止し、再接続を再試行します。
TryConnectingNow(void)
Service への接続を確立を試みます。

静的パブリック関数

DefaultReconnectPolicyCallback(void *const appstate, ReconnectParam & reconnectParam, uint32_t & delayMsec)
void
Service に次回接続したときに取得するためのデフォルトのポリシー実装。
HandleServiceConnectionClosed(WeaveConnection *con, WEAVE_ERROR conErr)
void
Service TCP 接続が閉じたときに呼び出されるハンドラ。
HandleServiceConnectionComplete(WeaveConnection *con, WEAVE_ERROR conErr)
void
Service TCP 接続が完了したときに呼び出されるハンドラ。
RecvdFromService(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *message)
void
トンネル ヘッダー内から生の IPv6 パケットをカプセル化解除した後、サービス TCP 接続からトンネリングされた IPv6 パケットを受信し、トンネル エンドポイント インターフェースに転送するハンドラ。
ServiceMgrStatusHandler(void *appState, WEAVE_ERROR err, StatusReport *report)
void
Service Manager が Service への TCP 接続を確立できなかった場合に呼び出されるハンドラ。

公開タイプ

ConnectPolicyCallback

void(* ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec)

次のトンネルが再接続するまでの待機時間を取得するコールバック。

詳細
パラメータ
[in] appState
SubscriptionClient の初期化中に設定されるアプリ状態ポインタ。
[in] reconnectParam
再接続の遅延の計算に影響するパラメータを持つ構造。
[out] delayMsec
次回の再接続試行までの待機時間(ミリ秒単位)。

TunnelConnNotifyReasons

 TunnelConnNotifyReasons
プロパティ
kStatus_TunBackupConnError

バックアップ トンネルの接続の試行が失敗したか、既存のトンネルがピアによってローカルで中止または閉じられたことを示すために使用されます。

kStatus_TunBackupLiveness

バックアップ Weave トンネルのトンネルライブネス プローブに関する情報を示すために使用されます。

kStatus_TunBackupOnlyDown

バックアップ トンネルがダウンしていることを示すために使用されます。

kStatus_TunBackupReconnectRcvd

サービスがバックアップ Weave トンネルの再接続をリクエストしたことを示すために使用されます。

kStatus_TunBackupUp

バックアップ Weave トンネルが稼働していることを示すために使用されます。

kStatus_TunDown

Weave トンネルのダウンを示すために使用します。

kStatus_TunFailoverToBackup

プライマリ トンネルが停止し、バックアップ トンネルへの切り替えが行われたことを示すために使用されます。

kStatus_TunPrimaryAndBackupUp

プライマリとバックアップの両方の Weave トンネルが稼働していることを示すために使用されます。

kStatus_TunPrimaryConnError

プライマリ トンネルの接続の試行が失敗したか、既存のトンネルがピアによってローカルで中止または閉じられたことを示すために使用されます。

kStatus_TunPrimaryLiveness

プライマリ Weave トンネルのトンネルライブネス プローブに関する情報を示すために使用されます。

kStatus_TunPrimaryReconnectRcvd

Service がプライマリ Weave トンネルの再接続をリクエストしたことを示すために使用されます。

kStatus_TunPrimaryUp

プライマリ Weave トンネルが稼働していることを示すために使用されます。

TunnelConnNotifyReasons

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr::TunnelConnNotifyReasons TunnelConnNotifyReasons

TunnelConnectionState

 TunnelConnectionState
プロパティ
kState_Connecting

Weave トンネル接続が開始したことを示すために使用されます。

kState_ConnectionEstablished

Weave トンネル接続が確立され、ルート情報が交換されていることを示すために使用されます。

kState_NotConnected

Weave トンネルが接続されていないことを示すために使用されます。

kState_ReconnectRecvd

ディレクトリ ルックアップ後に境界ゲートウェイに再接続を Service が求めることを示すために使用されます。

kState_TunnelClosing

Weave トンネルが閉じ、接続が切断されていることを示すために使用されます。

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
)

WeaveTunnelConnectionMgr を初期化します。

ServiceTunnelClose

void ServiceTunnelClose(
  WEAVE_ERROR err
)

Service トンネルを閉じます。

詳細
パラメータ
[in] err
呼び出し元から渡された WEAVE_ERROR。

SetInterfaceName

void SetInterfaceName(
  const char *intfName
)

Tunnel 接続の InterfaceName を設定します。

詳細
パラメータ
[in] tunIntf
Service トンネル接続を設定するための InterfaceName。

SetInterfaceType

void SetInterfaceType(
  const SrcInterfaceType srcIntfType
)

トンネル接続の SrcInterfaceType を設定。

詳細
パラメータ
[in] srcIntfType
サービス トンネル接続のインターフェースのネットワーク テクノロジー タイプ。

シャットダウン

void Shutdown(
  void
)

WeaveTunnelConnectionMgr をシャットダウンします。

StopAndReconnectTunnelConn

void StopAndReconnectTunnelConn(
  ReconnectParam & reconnParam
)

サービス トンネル接続を停止し、再接続を再試行します。

詳細
パラメータ
[in] err
呼び出し元から渡された WEAVE_ERROR。

TryConnectingNow

WEAVE_ERROR TryConnectingNow(
  void
)

Service への接続を確立を試みます。

ServiceManager を使用するか、直接、Service への接続を確立してみます。

WeaveTunnelConnectionMgr

 WeaveTunnelConnectionMgr(
  void
)

静的パブリック関数

DefaultReconnectPolicyCallback

void DefaultReconnectPolicyCallback(
  void *const appstate,
  ReconnectParam & reconnectParam,
  uint32_t & delayMsec
)

Service に次回接続したときに取得するためのデフォルトのポリシー実装。

このポリシーは、WEAVE_CONFIG_TUNNELING_RECONNECT_MAX_FIBONACCI_INDEX までのフィボナッチ数列に従って、増加するウィンドウの中でランダムなタイムスロット(ミリ秒単位の分解能)を選択します。

詳細
パラメータ
[in] appState
SubscriptionClient の初期化中に設定されるアプリ状態ポインタ。
[in] reconnectParam
再接続の遅延の計算に影響するパラメータを持つ構造。
[out] delayMsec
次回の再接続試行までの待機時間(ミリ秒単位)。

HandleServiceConnectionClosed

void HandleServiceConnectionClosed(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

Service TCP 接続が閉じたときに呼び出されるハンドラ。

mServiceConKeepAlive が true に設定されている場合、デバイスは Service への接続の再確立を試みます。

その後、デバイスは Service への接続の再確立を試みます。

詳細
パラメータ
[in] con
WeaveConnection オブジェクトへのポインタ。
[in] conErr
WeaveConnection または WEAVE_NO_ERROR 内のエラー。

HandleServiceConnectionComplete

void HandleServiceConnectionComplete(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

Service TCP 接続が完了したときに呼び出されるハンドラ。

デバイスはこの関数からサービスに対してトンネル制御コマンドを開始します。

デバイスはこの関数からサービスに対してトンネル制御コマンドを開始します。

詳細
パラメータ
[in] con
WeaveConnection オブジェクトへのポインタ。
[in] conErr
WeaveConnection または WEAVE_NO_ERROR 内のエラー。

RecvdFromService

void RecvdFromService(
  WeaveConnection *con,
  const WeaveMessageInfo *msgInfo,
  PacketBuffer *message
)

トンネル ヘッダー内から生の IPv6 パケットをカプセル化解除した後、サービス TCP 接続からトンネリングされた IPv6 パケットを受信し、トンネル エンドポイント インターフェースに転送するハンドラ。

詳細
パラメータ
[in] con
WeaveConnection オブジェクトへのポインタ。
[in] msgInfo
WeaveMessageInfo オブジェクトへのポインタ。
[in] message
トンネリングされた IPv6 パケットを保持する PacketBuffer オブジェクトへのポインタ。

ServiceMgrStatusHandler

void ServiceMgrStatusHandler(
  void *appState,
  WEAVE_ERROR err,
  StatusReport *report
)

Service Manager が Service への TCP 接続を確立できなかった場合に呼び出されるハンドラ。