CTR NEX API Reference
nn::nex::ConnectivityManager クラス

インターネット P2P 通信の管理クラスです。 [詳解]

#include <OnlineCore/src/Transport/Interface/ConnectivityManager.h>

nn::nex::PseudoSingletonを継承しています。

公開メンバ関数

qBool StartNATSession (CallContext *cc)
 NAT セッションを開始します。 [詳解]
 
qBool StopNATSession ()
 NAT セッションを終了します。 [詳解]
 

静的公開メンバ関数

static ConnectivityManagerGetInstance ()
 ConnectivityManager のインスタンスを取得します。 [詳解]
 

詳解

インターネット P2P 通信の管理クラスです。

関数詳解

static ConnectivityManager* nn::nex::ConnectivityManager::GetInstance ( )
static

ConnectivityManager のインスタンスを取得します。

戻り値
ConnectivityManager オブジェクトのポインタ
qBool nn::nex::ConnectivityManager::StartNATSession ( CallContext cc)

NAT セッションを開始します。

NAT セッションを開始し、インターネット P2P 通信に必要な前処理を行います。

インターネット P2P 通信を行う場合、NetZ オブジェクトを作成する前、もしくは VSocket::Open() を呼び出す前に必ず本関数を実行してください。 なお、本関数を実行するたびに P2P 通信で使用されるポート番号が変化します。

NgsFacade オブジェクト作成後の初回呼び出し時にのみ、 NAT 種別判定用サーバーの DNS による名前解決処理を別スレッドで行います。 名前解決前にルータの WAN 側のケーブルを抜いたときなどには、名前解決処理のタイムアウトを待つため、本非同期処理の完了に 30 秒以上かかることがあります。 また、名前解決はキャンセルできないため、StartNATSession() 後、アドレス解決が完了していない状態で NEX を終了させようとすると、30 秒以上かかることがあります。 本関数呼び出し前に NATTraversalClient オブジェクトの生成と、そのオブジェクトへの Credentials のバインドが必要です。

非同期処理の結果は、CallContext::GetOutcome() で取得できます。取得できる値は以下の通りです。

引数
[in,out]cc呼び出し情報。
戻り値一覧:

true 非同期処理の開始に成功。

false 指定した cc の状態が CallContext::CallInProgress となっており非同期処理を開始出来ない。 これは他の非同期処理で使用中であることを示します。 プログラミングエラーであるため、このケースはリリースビルド以外では内部で Assert により停止します。

参照
RootTransport::SetNameResolveThreadPriority(), RootTransport::GetNameResolveThreadPriority()
RootTransport::SetNameResolveThreadCoreNo(), RootTransport::GetNameResolveThreadCoreNo()
qBool nn::nex::ConnectivityManager::StopNATSession ( )

NAT セッションを終了します。

NetZ::Terminate() 完了後、本関数を呼び出してください。


戻り値一覧:

true 成功

false 失敗