PartyManager::ConnectToNetwork
ネットワークへの接続の非同期試行をキューに入れます。
構文
PartyError ConnectToNetwork(
const PartyNetworkDescriptor* networkDescriptor,
void* asyncIdentifier,
PartyNetwork** network
)
パラメーター
networkDescriptor
PartyNetworkDescriptor*
接続が確立されるネットワークに関連付けられた記述子。
asyncIdentifier
void*
オプション
完了状態の変更をこの呼び出しに関連付けるために使用できる、オプションの、アプリによって定義されたポインター サイズのコンテキスト値。
network
PartyNetwork**
オプションで割り当てられたライブラリの出力
オプションの出力ネットワーク オブジェクト。
戻り値
PartyError
c_partyErrorSuccess
新しいネットワークを接続する非同期操作が開始されるか、エラー コードが発生した場合。 このメソッドが失敗した場合、関連する状態の変更は発生しません。 人間が判読できる形式のエラー コードは、GetErrorMessage() を介して取得できます。
解説
このメソッドは、ローカル デバイスから透過的なクラウド リレー サーバーへの安全な DTLS 接続をネゴシエートして確立することにより、networkDescriptor
に関連付けられたネットワークへの非同期接続の試行をキューに入れます。
PartyConnectToNetworkCompletedStateChange は、非同期操作の完了時に、成功または失敗を示します。 成功すると、ローカル デバイスは透過的なクラウド リレー サーバーへの接続を確立します。 失敗すると、PartyNetworkDestroyedStateChange が生成されます。 少なくとも 1 人のローカル ユーザーが PartyNetwork::AuthenticateLocalUser() を介して正常に認証されるまで、他のデバイスは表示されず、ローカル デバイスはどのリモート デバイスにも表示されません。
デバイスがネットワークに正常に接続した後、PartyNetwork::AuthenticateLocalUser() を介してネットワークに認証する必要があります。 デバイスがネットワークに接続されているが、1 分以上認証されていない場合、デバイスは切断され、PartyNetworkDestroyedStateChange が生成されます。 これは、PartyNetwork::RemoveLocalUser() を呼び出した後、デバイスが認証されなかったか、認証を失ったかに関係なく発生します。
このメソッドは、オプションで、PartyNetwork::CreateInvitation() や PartyNetwork::CreateEndpoint() などの非同期ネットワーク操作を実行するためにすぐに使用できる出力として network
を提供します。 これらの非同期操作は、接続が完了するまで内部でキューに入れられ、接続が完了すると処理されます。 この network
は、結果の PartyConnectToNetworkCompletedStateChange でも提供され、完全に接続され、提供された asyncIdentifier
に関連付けられます。
この操作は、CreateNewNetwork() を介して作成されたときネットワークの構成で指定されたネットワークの接続デバイスの制限に達した場合、PartyConnectToNetworkCompletedStateChange::result を PartyStateChangeResult::NetworkLimitReached に設定して非同期に失敗します。
正常に返されると、このメソッドは、以前に GetNetworks() によって返された配列のメモリを無効化し、新しいネットワークを同期して配列に追加します。
StartProcessingStateChanges() でも、配列のメモリを無効化します。 返された network
オブジェクトは、 PartyNetworkDestroyedStateChange が生成され、オブジェクトを参照するすべての状態変化が FinishProcessingStateChanges() に返されるまで有効になります。
失敗時の再試行
ConnectToNetwork() が非同期に失敗した場合、StartProcessingStateChanges() が結果を示すことにより PartyConnectToNetworkCompletedStateChange が指定されます。 指定された PartyStateChangeResult に応じて、操作が遅れて再試行される場合があります。
結果 | 再試行の動作 |
---|---|
InternetConnectivityError | 10 秒以上の小さな遅延で再試行します。 お使いのアプリでは、自動的に再試行するのではなく、すぐにユーザーにエラーを表示する方が適切な場合があります。 |
NetworkLimitReached | 自動的に再試行しないでください。 代わりに、ユーザーにメッセージを表示し、ユーザーが次の試行を開始するまで待機します。 |
NetworkNoLongerExists | 再試行しないでください。 |
VersionMismatch | 再試行しないでください。 |
FailedToBindToLocalUdpSocket | この結果は、PartyOption::LocalUdpSocketBindAddress オプションで指定されたローカル UDP ソケットにライブラリがバインドできなかったことを意味します。 タイトルは、ライブラリのインスタンスをクリーンアップし、PartyOption::LocalUdpSocketBindAddress オプションを有効で、アドレスをバインドでき、ライブラリを再初期化するよう更新します。 |
要件
ヘッダー: Party.h
関連項目
PartyManager
PartyConnectToNetworkCompletedStateChange
PartyNetworkDestroyedStateChange
PartyNetworkConfiguration
PartyManager::CreateNewNetwork
PartyManager::GetNetworks
PartyNetwork::AuthenticateLocalUser
PartyNetwork::RemoveLocalUser
PartyNetwork::CreateInvitation
PartyNetwork::RevokeInvitation
PartyNetwork::CreateEndpoint
PartyNetwork::LeaveNetwork