インターネット P2P 通信の管理クラスです。 [詳解]
#include <OnlineCore/src/Transport/Interface/ConnectivityManager.h>
nn::nex::PseudoSingletonを継承しています。
公開メンバ関数 | |
qBool | StartNATSession (CallContext *cc) |
NAT セッションを開始します。 [詳解] | |
qBool | StopNATSession () |
NAT セッションを終了します。 [詳解] | |
静的公開メンバ関数 | |
static ConnectivityManager * | GetInstance () |
ConnectivityManager のインスタンスを取得します。 [詳解] | |
インターネット P2P 通信の管理クラスです。
|
static |
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 により停止します。
qBool nn::nex::ConnectivityManager::StopNATSession | ( | ) |
NAT セッションを終了します。
NetZ::Terminate () もしくは VSocket::Close() の呼び出し後に本関数を呼び出してください。
true 成功
false 失敗