CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
framework_Framework.h
1 /*--------------------------------------------------------------------------------*
2  Copyright (C)Nintendo All rights reserved.
3 
4  These coded instructions, statements, and computer programs contain proprietary
5  information of Nintendo and/or its licensed developers and are protected by
6  national and international copyright laws. They may not be disclosed to third
7  parties or copied or duplicated in any form, in whole or in part, without the
8  prior written consent of Nintendo.
9 
10  The content herein is highly confidential and should be handled accordingly.
11  *--------------------------------------------------------------------------------*/
12 
13 
14 #pragma once
15 
16 #include <nn/pia/framework/framework_Definitions.h>
17 #include <nn/pia/clone/clone_CloneProtocol.h>
18 
19 namespace nn
20 {
21 namespace pia
22 {
23 namespace framework
24 {
25 class ChangeStateJob;
26 class LoginJob;
27 
28 class CloneFacade;
29 class InetService;
30 class LanFacade;
31 class LocalFacade;
32 class NetworkService;
33 class ReckoningFacade;
34 class SessionFacade;
35 class SyncFacade;
36 class TransportFacade;
37 class TuneFacade;
38 
39 /*!
40 @brief framework モジュールを使用するためのシングルトンクラスです。
41 */
43 {
44 public:
45  /*!
46  @brief セッション参加処理の進行状態です。
47  */
48  enum State
49  {
50  State_NotInitialized = 0, //!< NEX やネットワークインターフェース、ソケットを終了した状態です。
51  State_NetworkCleanedUp = 0, //!< NEX やネットワークインターフェース、ソケットを終了した状態です。
52  State_NetworkStartedUp = 1, //!< NEX やネットワークインターフェース、ソケットを初期化し、ネットワーク接続が利用可能になった状態であり、ログアウトした状態です。
53  State_LoggedOut = 1, //!< NEX やネットワークインターフェース、ソケットを初期化し、ネットワーク接続が利用可能になった状態であり、ログアウトした状態です。
54  State_LoggedIn = 2, //!< ログインし、Pia を終了した状態です。
55  State_SessionFinalized = 2, //!< ログインし、Pia を終了した状態です。
56  State_SessionInitialized = 3, //!< Pia を初期化し、Pia をクリーンアップした状態です。
57  State_SessionCleanedUp = 3, //!< Pia を初期化し、Pia をクリーンアップした状態です。
58  State_SessionStartedUp = 4, //!< Pia をスタートアップし、セッションから離脱した状態です。
59  State_SessionLeft = 4, //!< Pia をスタートアップし、セッションから離脱した状態です。
60  State_SessionJoined = 5 //!< セッションに参加した状態です。
61 #if NN_PIA_EXPERIMENT_FRAMEWORK_JOINT_SESSION
62  ,
63  State_JointSessionJoined = 6, //!< ジョイントセッションに参加した状態です。
64  State_JointSessionLeft = 4 //!< Pia をスタートアップし、ジョイントセッションから離脱した状態です。
65 #endif
66  };
67 
68  /*!
69  @brief PiaClone の更新処理結果です。
70  */
72  {
73  clone::CloneProtocol::ErrorType errorType; //!< エラーの発生状態です。
74  clone::CloneProtocol::State cloneProtocolState; //!< CloneProtocol の動作状態です。
75  clone::ClockValue clock; //!< CloneProtocol が管理する時刻です。
76  };
77 
78  /*!
79  @cond PRIVATE
80  */
81  struct Setting
82  {
83  NetworkType networkType;
84  };
85  //! @endcond
86 
87  /*!
88  @cond PRIVATE
89  @brief コンストラクタです。アプリケーションはこのコンストラクタを直接呼び出すのではなく、 CreateInstance() を使う必要があります。
90  */
91  Framework(const Setting& setting);
92  //! @endcond
93 
94  /*!
95  @cond PRIVATE
96  @brief デストラクタです。
97  */
98  ~Framework();
99  //! @endcond
100 
101  /*!
102  @cond PRIVATE
103  @brief Framework クラスのインスタンスを作成します(シングルトンパターン)。
104  @return インスタンスの作成に成功すれば、成功の Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
105  @retval ResultNotInitialized framework モジュールが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
106  @retval ResultInvalidState CreateInstance() を呼ぶタイミングが誤っています。 BeginSetup() ~ EndSetup() 間で呼び出す必要があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
107  @retval ResultAlreadyExists 既にインスタンスは作成されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
108  @see DestroyInstance, GetInstance, Setting
109  */
110  static Result CreateInstance(const Setting& setting);
111  //! @endcond
112 
113  /*!
114  @cond PRIVATE
115  @brief Framework クラスのインスタンスを破棄します(シングルトンパターン)。
116  インスタンスが存在していなかった場合は、何もしません。
117  @see CreateInstance, GetInstance
118  */
119  static void DestroyInstance();
120  //! @endcond
121 
122  /*!
123  @brief Framework クラスのインスタンスを得ます(シングルトンパターン)。
124  事前に CreateInstance() によってインスタンスを作成していない場合は、NULL ポインタが返されます。
125  この関数はスレッドセーフです。
126  @return Framework インスタンスへのポインタです。
127  @see CreateInstance, DestroyInstance
128  */
130  {
131  return s_pInstance;
132  }
133 
134  /*!
135  @cond PRIVATE
136  @brief スタートアップ処理を実行します。
137  @details framework::EndSetup() 呼び出しで framework モジュールの初期化処理を終えた後で呼び出す必要があります。
138  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
139  @retval ResultInvalidState 既に Startup() が呼ばれているか、framework::BeginSetup() ~ framework::EndSetup() 区間の中で呼び出されている可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
140  @see Cleanup, framework::EndSetup
141  */
142  Result Startup();
143  //! @endcond
144 
145  /*!
146  @cond PRIVATE
147  @brief クリーンアップ処理を実行します。
148  @details framework モジュールの終了処理を実行する前に呼び出す必要があります。
149  @see Startup
150  */
151  void Cleanup();
152  //! @endcond
153 
154  /*!
155  @brief デバッグに有用な情報をプリントします。
156  @param[in] flag トレースフラグの論理和。詳細は @ref common::TraceFlag 型を参照してください。
157  */
158  void Trace(uint64_t flag) const;
159 
160  /*!
161  @brief ディスパッチ処理を行います。
162  @details 通常、1 ゲームフレームに 1 回または 2 回の頻度で呼び出します。アクションゲームでは通信遅延を低減するために、ゲームの通信処理の前後に 1 回ずつ、計 2 回 Update() を呼び出すことを推奨します。 前後で呼び出すことで直前の受信をゲーム処理に反映させることができ、ゲーム処理の結果を直後に送信することができます。
163  なお、非同期処理中は Update() 失敗時のエラーハンドリングは不要です。
164  InetService(NexServiceなど)のディスパッチの後、Piaのディスパッチが呼ばれます。
165  isAutoInitializeAndLogin を有効にして初期化した場合、Framework::State_LoggedIn 以上の状態の間、InetService の接続確認(nex::NgsFacade::IsConnectedなど)が行われます。
166  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
167  @retval ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
168  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
169  @retval ResultInvalidState CreateInstance() が呼ばれていない、もしくは DestroyInstance() を呼んだ可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
170  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
171  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
172  @if NIN_DOC
173  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
174  @endif
175  */
176  Result Update();
177 
178  /*!
179  @brief PiaClone の更新処理を行います。
180  @details 1 ゲームフレームに 1 回呼び出す必要があります。
181  @return PiaClone の更新処理結果が返されます。
182  */
183  CloneUpdateResult CloneUpdate();
184 
185  /*!
186  @brief InetService インスタンスを取得します。
187  @details
188  @return InetService インスタンスのポインタが返されます。
189  */
191 
192  /*!
193  @cond PRIVATE
194  @brief ランダムマッチメイクの非同期処理を開始します。
195  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
196  @retval ResultInvalidState この関数を呼び出すタイミングが誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
197  @retval ResultNetworkConnectionIsLost 接続が既に切断されています。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
198  */
199  Result JoinRandomSessionAsyncInternal();
200  //! @endcond
201 
202  /*!
203  @cond PRIVATE
204  @brief JoinRandomSessionAsyncInternal の非同期処理の完了をチェックします。
205  @retval true 成功です。
206  @retval false 失敗です。
207  */
208  bool IsJoinRandomSessionCompletedInternal();
209  //! @endcond
210 
211  /*!
212  @cond PRIVATE
213  @brief JoinRandomSessionAsyncInternal の非同期処理の結果を取得します。
214  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
215  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
216  @retval ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
217  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
218  @retval ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
219  @retval ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
220  @retval ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
221  @retval ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。クリーンアップ処理を実行してください。
222  @retval ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
223  @retval ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
224  @retval ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
225  @retval ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
226  @retval ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
227  @retval ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
228  @retval ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
229  @retval ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
230  @retval ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
231  @retval ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
232  @retval ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
233  @retval ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
234  @retval ResultJoinRequestDenied セッションホストに接続を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
235  @retval ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
236  @retval ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
237  @retval ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
238  @retval ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
239  @retval ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
240  @retval ResultInvalidSystemMessage セッションホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
241  @retval ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
242  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
243  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
244  @retval ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
245  */
246  Result GetJoinRandomSessionResultInternal() const;
247  //! @endcond
248 
249  /*!
250  @cond PRIVATE
251  @brief ランダムマッチのセッション離脱処理です。
252  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
253  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
254  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
255  */
256  Result LeaveSessionAsyncInternal();
257  //! @endcond
258 
259  /*!
260  @cond PRIVATE
261  @brief ランダムマッチのセッション離脱処理の完了を確認します。
262  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
263  */
264  bool IsLeaveSessionCompletedInternal();
265  //! @endcond
266 
267  /*!
268  @cond PRIVATE
269  @brief ランダムマッチのセッション離脱処理の結果を取得します。
270  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
271  @retval ResultInvalidState 処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
272  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
273  @retval ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
274  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
275  @retval ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
276  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
277  */
278  Result GetLeaveSessionResultInternal() const;
279  //! @endcond
280 
281  /*!
282  @brief セッションの参加受付を開始します。
283  @details セッション参加受付を開始する非同期処理を開始します。
284  セッションホストであるときに実行できます。
285  開始した処理は @ref Framework::Update() を定期的に呼び出すことで進行します。
286  処理の完了は @ref Framework::IsOpenSessionCompleted でチェックし、結果は @ref Framework::GetOpenSessionResult で確認できます。
287  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
288  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、状態が State_SessionStartedUp に達していること、セッション参加状態であること、セッションホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
289  @see IsOpenSessionCompleted, GetOpenSessionResult
290  */
292 
293  /*!
294  @brief Framework::OpenSessionAsync() の非同期処理の完了をチェックします。
295  @details @ref Framework::OpenSessionAsync() で開始された非同期処理は、本関数で完了をチェックできます。
296  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
297  @see OpenSessionAsync, GetOpenSessionResult
298  */
299  bool IsOpenSessionCompleted() const;
300 
301  /*!
302  @brief Framework::OpenSessionAsync() の非同期処理の結果を取得します。
303  @details @ref Framework::OpenSessionAsync() で開始された非同期処理が完了した後、本関数で結果を取得できます。
304  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
305  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
306  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
307  @retval ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
308  @retval ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
309  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
310  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
311  @see OpenSessionAsync, IsOpenSessionCompleted
312  */
314 
315  /*!
316  @brief セッションの参加締切を行います。
317  @details セッション参加を締め切る非同期処理を開始します。
318  セッションホストであるときに実行できます。
319  開始した処理は @ref Framework::Update() を定期的に呼び出すことで進行します。
320  処理の完了は @ref Framework::IsCloseSessionCompleted() でチェックし、結果は @ref Framework::GetCloseSessionResult() で確認できます。
321  本関数の呼び出し直前にセッションに新規参加しようとしているステーションが非同期処理完了後に参加してくる可能性があるため、
322  セッション参加締切後、マッチメイクセッションとメッシュの参加者数が一致するまで待ってから非同期処理を完了します。
323  また、一定期間(15秒)経過しても一致しない場合も非同期処理を完了します。この場合、@ref Framework::GetCloseSessionResult() は
324  ResultNegligibleFault を返します。非同期処理完了後に新規参加してくる可能性がありますので、アプリケーションで適切にハンドリングしてください。
325  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
326  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、状態が State_SessionStartedUp に達していること、セッション参加状態であること、セッションホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
327  @see IsCloseSessionCompleted, GetCloseSessionResult
328  */
330 
331  /*!
332  @brief Framework::CloseSessionAsync() の非同期処理の完了をチェックします。
333  @details @ref Framework::CloseSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
334  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
335  @see CloseSessionAsync, GetCloseSessionResult
336  */
337  bool IsCloseSessionCompleted() const;
338 
339  /*!
340  @brief Framework::CloseSessionAsync() の非同期処理の結果を取得します。
341  @details @ref Framework::CloseSessionAsync() で開始された非同期処理が完了した後、本関数で結果を取得できます。
342  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
343  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
344  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
345  @retval ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
346  @retval ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
347  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
348  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
349  @retval ResultNegligibleFault マッチメイクセッションとメッシュの参加人数が一致しない状態で一定時間経過しました。アプリケーションで適切にハンドリングしてください。
350  @see CloseSessionAsync, IsCloseSessionCompleted
351  */
353 
354  /*!
355  @cond PRIVATE
356  @brief セッション参加処理の進行状態の状態遷移を開始します。
357  @details 指定した進行状態に達するまでに必要な処理を行います。切断等が発生した際のエラーハンドリング時にも呼び出すことができ、必要な終了関連処理を行います。
358  @details @ref State_SessionJoined の状態で @ref State_SessionStartedUp、@ref State_SessionLeft を目標状態に指定すると、@ref State_SessionCleanedUp まで遷移します。
359  @param[in] transitionState 目標とするセッション参加処理の進行状態です。
360  @param[in] result エラーハンドリングの対象となる Result です。エラーハンドリング時以外は、ResultSuccess を指定する必要があります。
361  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
362  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
363  @retval ResultInvalidArgument transitionState に遷移できません。result のハンドリングを行うために終了関連処理が必要だが、現在の進行状態よりも進んだ transitionState を指定した場合などに返ります。
364  @see IsChangeStateCompleted, GetChangeStateResult
365  */
366  Result ChangeStateAsync(State transitionState, Result result);
367  //! @endcond
368 
369  /*!
370  @brief セッション参加処理の進行状態の状態遷移を開始します。
371  @details 指定した進行状態に達するまでに必要な処理を行います。
372  @details @ref State_SessionJoined の状態で @ref State_SessionStartedUp 、@ref State_SessionLeft を目標状態に指定すると、@ref State_SessionCleanedUp まで遷移します。
373  @if NIN_DOC
374  @details 状態を @ref State_SessionInitialized から @ref State_NetworkStartedUp に進行する際に内部で nn::nifm::HandleNetworkRequestResult() を呼ぶため、本体機能の UI を画面に表示することがあります。この間処理をブロックします。
375  @details 状態を @ref State_NetworkStartedUp から @ref State_LoggedIn に進行する際に内部で nn::account::EnsureNetworkServiceAccountAvailable() を呼ぶため、指定したユーザーのネットワークサービスアカウントが利用可能ではない場合に、本体機能の UI を画面に表示します。この間処理をブロックします。
376  @details ネットワークタイプがローカルかつ framework::SessionStartupSetting::isAutoInitializeLdn が真のとき、内部で LDN ライブラリの初期化処理を行いますが、その後 LDN ライブラリの終了処理を行うまでの間、他の通信機能を利用できなくなります。システムが通信機能を使用する場合があるため、必要なシーン以外では LDN ライブラリを初期化しないでください。
377  また、ローカル通信の使用が終わったら速やかに LDN ライブラリの終了処理を行ってください。
378  LDN ライブラリの初期化は、状態を State_SessionInitialized から State_SessionStartedUp に遷移するタイミングで行われ、
379  終了処理は State_SessionStartedUp から State_SessionInitialized に遷移するタイミングで行われます。
380  @endif
381  @param[in] transitionState 目標とするセッション参加処理の進行状態です。
382  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
383  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
384  @retval ResultInvalidArgument 引数が誤っています。現在の進行状態よりも進んだ transitionState を指定した場合などに返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
385  @see IsChangeStateCompleted, GetChangeStateResult
386  */
387  Result ChangeStateAsync(State transitionState);
388 
389  /*!
390  @brief 切断などが発生した際のエラーハンドリングを行います。
391  @details 指定した進行状態に達するまでに必要な終了関連処理を行います。
392  @details @ref State_SessionJoined の状態で @ref State_SessionStartedUp 、@ref State_SessionLeft を目標状態に指定すると、@ref State_SessionCleanedUp まで遷移します。
393  @param[in] transitionState 目標とするセッション参加処理の進行状態です。
394  @param[in] result エラーハンドリングの対象となる Result です。エラーハンドリング時以外は、ResultSuccess を指定する必要があります。
395  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
396  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
397  @retval ResultInvalidArgument transitionState に遷移できません。result のハンドリングを行うために終了関連処理が必要な状況で、現在の進行状態よりも進んだ transitionState を指定した場合に返ります。IsSuccess() が真となる Result を引数として与えた場合もこの値が帰ります。
398  @see IsChangeStateCompleted, GetChangeStateResult
399  */
400  Result HandleErrorAsync(State transitionState, Result result);
401 
402  /*!
403  @brief Framework::ChangeStateAsync() の非同期処理の完了をチェックします。
404  @details @ref Framework::ChangeStateAsync で開始された非同期処理は、本関数で完了をチェックできます。
405  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
406  @see ChangeStateAsync, GetChangeStateResult
407  */
408  bool IsChangeStateCompleted() const;
409 
410  /*!
411  @brief Framework::ChangeStateAsync() の非同期処理の結果を取得します。
412  @details @ref Framework::ChangeStateAsync() で開始された非同期処理が完了した後、本関数で結果を取得できます。
413  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
414  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。登録した設定を確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
415  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
416  @retval ResultAlreadyInitialized 既に初期化が完了しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
417  @retval ResultSdkError SDK の API 呼び出しに失敗しました。
418  @if CTR_DOC
419  @retval ResultSdkViewerErrorCodeError SDK の API 呼び出しに失敗しました。nn::pia::Result::GetErrorCode() で取得できるエラーコードは SDK のものになります。
420  @endif
421  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
422  @retval ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
423  @retval ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
424  @retval ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
425  @retval ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。クリーンアップ処理を実行してください。
426  @retval ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
427  @retval ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
428  @retval ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
429  @retval ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
430  @retval ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
431  @retval ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
432  @retval ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
433  @retval ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
434  @retval ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
435  @retval ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
436  @retval ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
437  @retval ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
438  @retval ResultJoinRequestDenied セッションホストに接続を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
439  @retval ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
440  @retval ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
441  @retval ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
442  @retval ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
443  @retval ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
444  @retval ResultInvalidSystemMessage セッションホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
445  @retval ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
446  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
447  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
448  @retval ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
449  @retval ResultTimeOut タイムアウトで終了しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
450  @retval ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
451  @if NIN_DOC
452  @retval ResultWifiOff 無線がオフになっています。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
453  @retval ResultSleep スリープ状態です。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
454  @retval ResultCancelledByUser ユーザー操作に従って処理を中断しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
455  @retval ResultSdkViewerResultError SDK の API 呼び出しに失敗しました。nn::pia::framework::Framework::GetLastSdkResult() で nn::Result を取得し、エラービューアアプレットを使用して適切にハンドリングして下さい。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
456  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
457  @endif
458  @see ChangeStateAsync, IsChangeStateCompleted
459  */
461 
462  /*!
463  @brief Framework::HandleErrorAsync() の非同期処理の完了をチェックします。
464  @details @ref Framework::HandleErrorAsync() で開始された非同期処理は、本関数で完了をチェックできます。
465  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
466  @see HandleErrorAsync, GetHandleErrorResult
467  */
468  bool IsHandleErrorCompleted() const;
469 
470  /*!
471  @brief Framework::HandleErrorAsync() の非同期処理の結果を取得します。
472  @details @ref Framework::HandleErrorAsync() で開始された非同期処理が完了した後、本関数で結果を取得できます。
473  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
474  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
475  @see HandleErrorAsync, IsHandleErrorCompleted
476  */
478  // n3492: todo retval が網羅できていないので、追記する必要があります。
479 
480  /*!
481  @brief セッション作成処理を行う非同期処理を開始します。
482  @param[in] pSetting セッション作成に必要なパラメータです。
483  @return IsSuccess() が真となる Result を返します。
484  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
485  @retval ResultInvalidArgument 引数が誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
486  */
488 
489  /*!
490  @brief セッション作成処理が成功したか確認します。
491  @retval true 成功です。
492  @retval false 失敗です。
493  */
494  bool IsCreateSessionCompleted() const;
495 
496  /*!
497  @brief セッション作成処理の結果を取得します。
498  @return IsSuccess() が真となる Result を返します。
499  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
500  @retval ResultInvalidState 非同期処理を進行できない内部状態になりました。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
501  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
502  @retval ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
503  @retval ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
504  @retval ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
505  @retval ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
506  @retval ResultTimeOut タイムアウトで終了しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
507  @retval ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
508  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
509  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
510  @retval ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
511  */
513 
514  /*!
515  @cond PRIVATE
516  @brief セッション作成処理を行う非同期処理を開始します。
517  @param[in] pSetting セッション作成に必要なパラメータです。
518  @return IsSuccess() が真となる Result を返します。
519  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
520  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
521  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
522  */
523  Result CreateSessionAsyncInternal(const session::CreateSessionSetting* pSetting);
524  //! @endcond
525 
526  /*!
527  @cond PRIVATE
528  @brief セッション作成処理が成功したか確認します。
529  @retval true 成功です。
530  @retval false 失敗です。
531  */
532  bool IsCreateSessionCompletedInternal();
533  //! @endcond
534 
535  /*!
536  @cond PRIVATE
537  @brief セッション作成処理の結果を取得します。
538  @return IsSuccess() が真となる Result を返します。
539  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
540  @retval ResultInvalidState 非同期処理を進行できない内部状態になりました。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
541  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
542  @retval ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
543  @retval ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
544  @retval ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
545  @retval ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
546  @retval ResultTimeOut タイムアウトで終了しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
547  @retval ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
548  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
549  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
550  @retval ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
551  */
552  Result GetCreateSessionResultInternal() const;
553  //! @endcond
554 
555  /*!
556  @brief セッション検索を行う非同期処理を開始します。
557  @param[in] pCriteria セッション検索に必要なパラメータです。
558  @return IsSuccess() が真となる Result を返します。
559  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
560  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
561  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
562  */
564 
565  /*!
566  @brief セッション検索が成功したか確認します。
567  @retval true 成功です。
568  @retval false 失敗です。
569  */
570  bool IsBrowseSessionCompleted() const;
571 
572  /*!
573  @brief セッション検索の結果を取得します。
574  @return IsSuccess() が真となる Result を返します。
575  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
576  @retval ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
577  @retval ResultCancelled 実行中の非同期処理をキャンセルしました。クリーンアップ処理を実行してください。
578  @retval ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
579  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
580  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
581  */
583 
584  Result BrowseSessionAsyncInternal(const session::SessionSearchCriteria* pCriteria);
585  bool IsBrowseSessionCompletedInternal() const;
586  Result GetBrowseSessionResultInternal() const;
587 
588  /*!
589  @brief BrowseSessionAsync の非同期処理で検索できたセッションのリストを取得します。
590  @details @ref Framework::BrowseSessionAsync で開始された非同期処理が完了し、@ref Framework::GetBrowseSessionResult が成功した後、本関数でセッションリストを取得できます。
591  @return 検索できたセッションのリストのポインタを返します。セッションが見つからない場合は NULL を返します。
592  */
594 
595  /*!
596  @brief セッション参加処理を行う非同期処理を開始します。
597  @param[in] pSetting セッション参加に必要なパラメータです。
598  @return IsSuccess() が真となる Result を返します。
599  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
600  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
601  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
602  */
604 
605  /*!
606  @brief セッション参加が成功したか確認します。
607  @retval true 成功です。
608  @retval false 失敗です。
609  */
610  bool IsJoinSessionCompleted() const;
611 
612  /*!
613  @brief セッション参加の結果を取得します。
614  @return IsSuccess() が真となる Result を返します。
615  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
616  @retval ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
617  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
618  @retval ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。@cond NIN_DOC ローカル通信でパスワードが一致しなかった場合にも返ります。 @endcondクリーンアップ処理を実行してください。
619  @retval ResultMatchmakeSessionIsFull マッチメイクセッションが満員でした。クリーンアップ処理を実行してください。
620  @retval ResultDeniedByParticipants セッション参加者が自分をブラックリストに登録しています。クリーンアップ処理を実行してください。
621  @retval ResultParticipantInBlockList セッションに自分がブロックリストに登録している参加者がいました。クリーンアップ処理を実行してください。
622  @retval ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
623  @retval ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
624  @retval ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
625  @retval ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
626  @retval ResultInvalidState 接続可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
627  @retval ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
628  @retval ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
629  @retval ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
630  @retval ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
631  @retval ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
632  @retval ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
633  @retval ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
634  @retval ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
635  @retval ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
636  @retval ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
637  @retval ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
638  @retval ResultJoinRequestDenied セッションホストに接続を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
639  @retval ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
640  @retval ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
641  @retval ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
642  @retval ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
643  @retval ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
644  @retval ResultInvalidSystemMessage セッションホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
645  @retval ResultSessionUserPasswordUnmatch 参加時に指定したユーザーパスワードがセッションに設定されたユーザーパスワードと一致しませんでした。クリーンアップ処理を実行してください。
646  @retval ResultSessionSystemPasswordUnmatch 参加時に指定したシステムパスワードがセッションに設定されたシステムパスワードと一致しませんでした。クリーンアップ処理を実行してください。
647  @retval ResultSessionIsClosed 参加を行おうとしたセッションが締め切られていました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
648  @retval ResultHostIsNotFriend 参加を行おうとしたセッションのホストがフレンドではありませんでした。クリーンアップ処理を実行してください。
649  @retval ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
650  @retval ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
651  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
652  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
653  @retval ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
654  @retval ResultNetworkIsFull ネットワークが満員でした。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
655  @retval ResultTimeOut タイムアウトで終了しました。
656  @if CTR_DOC
657  local::UdsJoinSessionSetting で設定した暗号鍵が誤っている場合にも返ります。
658  ローカル通信時にのみ返ります。
659  @endif
660  クリーンアップ処理を実行してください。
661  @if CTR_DOC
662  @retval ResultLocalLowerVersion 自分の @ref nn::pia::local::LocalNetworkVersion 、または、アプリケーションバージョンが参加を行おうとしたセッションのものよりも低いです。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
663  @retval ResultLocalHigherVersion 自分の @ref nn::pia::local::LocalNetworkVersion 、または、アプリケーションバージョンが参加を行おうとしたセッションのものよりも高いです。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
664  @elseif NIN_DOC
665  @retval ResultLocalLowerVersion 自分の @ref nn::pia::local::LocalNetworkVersion 、または、ローカル通信バージョンが参加を行おうとしたセッションのものよりも低いです。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
666  @retval ResultLocalHigherVersion 自分の @ref nn::pia::local::LocalNetworkVersion 、または、ローカル通信バージョンが参加を行おうとしたセッションのものよりも高いです。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
667  @endif
668  @retval ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
669  */
671 
672  /*!
673  @cond PRIVATE
674  @brief セッション参加処理を行う非同期処理を開始します。
675  @param[in] pSetting セッション参加に必要なパラメータです。
676  @return IsSuccess() が真となる Result を返します。
677  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
678  @retval ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
679  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
680  */
681  Result JoinSessionAsyncInternal(const session::JoinSessionSetting* pSetting);
682  //! @endcond
683 
684  /*!
685  @cond PRIVATE
686  @brief セッション参加が成功したか確認します。
687  @retval true 成功です。
688  @retval false 失敗です。
689  */
690  bool IsJoinSessionCompletedInternal();
691  //! @endcond
692 
693  /*!
694  @cond PRIVATE
695  @brief セッション参加の結果を取得します。
696  @return IsSuccess() が真となる Result を返します。
697  @retval ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
698  @retval ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
699  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
700  @retval ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。@cond NIN_DOC ローカル通信でパスワードが一致しなかった場合にも返ります。 @endcondクリーンアップ処理を実行してください。
701  @retval ResultMatchmakeSessionIsFull マッチメイクセッションが満員でした。クリーンアップ処理を実行してください。
702  @retval ResultDeniedByParticipants セッション参加者が自分をブラックリストに登録しています。クリーンアップ処理を実行してください。
703  @retval ResultParticipantInBlockList セッションに自分がブロックリストに登録している参加者がいました。クリーンアップ処理を実行してください。
704  @retval ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
705  @retval ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
706  @retval ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
707  @retval ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
708  @retval ResultInvalidState 接続可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
709  @retval ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
710  @retval ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
711  @retval ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
712  @retval ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
713  @retval ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
714  @retval ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
715  @retval ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
716  @retval ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
717  @retval ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
718  @retval ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
719  @retval ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
720  @retval ResultJoinRequestDenied セッションホストに接続を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
721  @retval ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
722  @retval ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
723  @retval ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
724  @retval ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
725  @retval ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
726  @retval ResultInvalidSystemMessage セッションホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
727  @retval ResultSessionUserPasswordUnmatch 参加時に指定したユーザーパスワードがセッションに設定されたユーザーパスワードと一致しませんでした。クリーンアップ処理を実行してください。
728  @retval ResultSessionSystemPasswordUnmatch 参加時に指定したシステムパスワードがセッションに設定されたシステムパスワードと一致しませんでした。クリーンアップ処理を実行してください。
729  @retval ResultSessionIsClosed 参加を行おうとしたセッションが締め切られていました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
730  @retval ResultHostIsNotFriend 参加を行おうとしたセッションのホストがフレンドではありませんでした。クリーンアップ処理を実行してください。
731  @retval ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
732  @retval ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
733  @retval ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
734  @retval ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
735  @retval ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
736  @retval ResultNetworkIsFull ネットワークが満員でした。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
737  @retval ResultTimeOut タイムアウトで終了しました。
738  @if CTR_DOC
739  local::UdsJoinSessionSetting で設定した暗号鍵が誤っている場合にも返ります。
740  ローカル通信時にのみ返ります。
741  @endif
742  クリーンアップ処理を実行してください。
743  @if CTR_DOC
744  @retval ResultLocalLowerVersion 自分の @ref local::LocalNetworkVersion 、または、アプリケーションバージョンが参加を行おうとしたセッションのものよりも低いです。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
745  @retval ResultLocalHigherVersion 自分の @ref local::LocalNetworkVersion 、または、アプリケーションバージョンが参加を行おうとしたセッションのものよりも高いです。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
746  @elseif NIN_DOC
747  @retval ResultLocalLowerVersion 自分の @ref local::LocalNetworkVersion 、または、ローカル通信バージョンが参加を行おうとしたセッションのものよりも低いです。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
748  @retval ResultLocalHigherVersion 自分の @ref local::LocalNetworkVersion 、または、ローカル通信バージョンが参加を行おうとしたセッションのものよりも高いです。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
749  @endif
750  @retval ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
751  */
752  Result GetJoinSessionResultInternal() const;
753  //! @endcond
754 
755  /*!
756  @brief 指定されたセッションの設定を更新します。
757  @details 非同期に指定したセッションの設定を更新します。
758  セッションホストであるときに実行できます。
759  処理の完了は @ref IsUpdateSessionSettingCompleted でチェックし、結果は @ref GetUpdateSessionSettingResult で確認できます。
760  @param[in] pUpdateSessionSetting 変更する設定をまとめる UpdateSessionSetting 派生クラスのポインタ
761  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
762  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、ホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
763  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。インターネットマッチメイク時や LAN マッチメイク時には、無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
764  @retval nn::pia::ResultWifiOff 無線がオフになっています。ローカル通信時にのみ返りますインターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
765  @retval nn::pia::ResultSleep スリープ状態です。ローカル通信時にのみ返りますインターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
766  */
767  Result UpdateSessionSettingAsync(const session::UpdateSessionSetting* pUpdateSessionSetting);
768 
769  /*!
770  @brief UpdateSessionSettingAsync の非同期処理の完了をチェックします。
771  @details @ref UpdateSessionSettingAsync で開始された非同期処理は、本関数で完了をチェックできます。
772  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
773  */
774  bool IsUpdateSessionSettingCompleted() const;
775 
776  /*!
777  @brief UpdateSessionSettingAsync の非同期処理の結果を取得します。
778  @details @ref UpdateSessionSettingAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
779  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
780  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
781  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
782  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
783  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
784  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
785  */
787 
788  /*!
789  @brief 参加中のセッション情報を取得します。
790  @details セッション情報は自動的には更新されません。セッション情報の更新は @ref RequestSessionInfoAsync で行う必要があります。
791  @return 参加中のセッション情報を返します。
792  */
793  const session::ISessionInfo* GetSessionInfo() const;
794 
795  /*!
796  @brief 参加中のセッション情報の取得要求を行います。
797  @details 参加中のセッション情報の取得要求を行う非同期処理を開始します。
798  開始した処理は @ref framework::Framework::Update() を定期的に呼び出すことで進行します。
799  処理の完了は @ref IsRequestSessionInfoCompleted でチェックし、結果は @ref GetRequestSessionInfoResult で確認できます。
800  <br>
801  インターネット通信の場合、ゲームサーバーアクセスを行います。1 分間に 10 回以上の呼び出しを行ってはいけません。
802  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
803  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。セッションに参加していないか、他の非同期処理が行われていないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
804  @see IsRequestSessionInfoCompleted, GetRequestSessionInfoResult
805  */
807 
808  /*!
809  @brief RequestSessionInfoAsync の非同期処理の完了をチェックします。
810  @details @ref RequestSessionInfoAsync で開始された非同期処理は、本関数で完了をチェックできます。
811  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
812  @see RequestSessionInfoAsync, GetRequestSessionInfoResult
813  */
814  bool IsRequestSessionInfoCompleted() const;
815 
816  /*!
817  @brief RequestSessionInfoAsync の非同期処理の結果を取得します。
818  @details @ref RequestSessionInfoAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
819  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
820  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
821  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
822  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
823  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
824  */
826 
827 #if NN_PIA_EXPERIMENT_FRAMEWORK_JOINT_SESSION
828  /*!
829  @cond PRIVATE
830  @brief ランダムマッチメイクでジョイントセッションに参加する非同期処理を開始します。
831  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
832  */
833  Result JoinRandomJointSessionAsyncInternal();
834  //! @endcond
835 
836  /*!
837  @cond PRIVATE
838  @brief JoinRandomJointSessionAsyncInternal の非同期処理の完了をチェックします。
839  @retval true 成功です。
840  @retval false 失敗です。
841  */
842  bool IsJoinRandomJointSessionCompletedInternal();
843  //! @endcond
844 
845  /*!
846  @cond PRIVATE
847  @brief JoinRandomJointSessionAsyncInternal の非同期処理の結果を取得します。
848  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
849  */
850  Result GetJoinRandomJointSessionResultInternal() const;
851  //! @endcond
852 
853  /*!
854  @brief ジョイントセッションを解散する非同期処理を開始します。
855  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
856  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
857  @retval ResultInvalidState API を呼び出すタイミングが誤っています。ジョイントセッションホストでないステーションが呼び出した際にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
858  */
860 
861  /*!
862  @brief DestroyJointSessionAsync の非同期処理の完了をチェックします。
863  @retval true 成功です。
864  @retval false 失敗です。
865  */
866  bool IsDestroyJointSessionCompleted() const;
867 
868  /*!
869  @brief DestroyJointSessionAsync の非同期処理の結果を取得します。
870  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
871  @retval nn::pia::ResultInvalidState 処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
872  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
873  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
874  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
875  @retval nn::pia::ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
876  @retval nn::pia::ResultCompanionStationIsLeft 同行するクライアントとの接続が切断しました。クリーンアップ処理を実行してください。
877  @retval nn::pia::ResultSessionMigrationFailed セッション移行処理に失敗しました。クリーンアップ処理を実行してください。
878  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
879  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
880  @if NIN_DOC
881  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
882  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
883  @endif
884  */
886 
887  /*!
888  @brief セッション移行中であるかを判定します。
889  @return セッション移行中であれば true を返します。
890  */
891  bool IsSessionMigrating();
892 #endif
893 
894 
895  /*!
896  @cond PRIVATE
897  @brief クリーンアップ、サーバー情報解除、ログアウト、インターネット切断を行います。
898  */
899  void LeaveSessionAndFinalize();
900  //! @endcond
901 
902  /*!
903  @cond PRIVATE
904  @brief インターネットサービスの初期化処理です。
905  @return IsSuccess() が真となる Result を返します。
906  @retval ResultAlreadyInitialized 既に初期化が完了しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
907  @retval ResultInvalidArgument RegisterXxxInitializeSetting() で渡した引数が誤っています。
908  */
909  Result InitializeInetService();
910  //! @endcond
911 
912  /*!
913  @cond PRIVATE
914  @brief Pia の初期化処理です。
915  @return IsSuccess() が真となる Result を返します。
916  @retval ResultAlreadyInitialized 既に初期化が完了しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
917  */
918  Result InitializeSession();
919  //! @endcond
920 
921  /*!
922  @cond PRIVATE
923  @brief インターネットサービス(NEX など)、ネットワークサービス(NIFM など)、ソケットを初期化します。
924  @return IsSuccess() が真となる Result を返します。
925  */
926  Result StartupNetwork();
927  //! @endcond
928 
929  /*!
930  @cond PRIVATE
931  @brief ネットワークインターフェースの初期化処理です。
932  @return IsSuccess() が真となる Result を返します。
933  @retval ResultInvalidArgument RegisterXxxInitializeSetting() で渡した引数が誤っています。
934  @retval ResultSdkError SDK の API 呼び出しに失敗しました。
935  */
936  Result InitializeNetworkInterface();
937  //! @endcond
938 
939  /*!
940  @cond PRIVATE
941  @brief ソケットの初期化処理です。
942  @return IsSuccess() が真となる Result を返します。
943  @retval ResultInvalidArgument RegisterXxxInitializeSetting() で渡した引数が誤っています。
944  @retval ResultSdkError SDK の API 呼び出しに失敗しました。
945  */
946  Result InitializeSocket();
947  //! @endcond
948 
949  Result Login(common::AsyncContext* pAsyncContext, bool isInChangeStateAsync);
950  Result LoginAsync();
951  bool IsLoginCompleted() const;
952  Result GetLoginResult() const;
953 
954  /*!
955  @cond PRIVATE
956  @brief Pia のスタートアップ処理です。
957  @return IsSuccess() が真となる Result を返します。
958  @retval ResultInvalidState API を呼び出すタイミングが誤っています。
959  @retval ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
960  @retval ResultSdkError SDK の API 呼び出しに失敗しました。
961  */
962  Result StartupSession();
963  //! @endcond
964 
965  /*!
966  @cond PRIVATE
967  @brief Pia のクリーンアップ処理です。
968  */
969  void CleanupSession();
970  //! @endcond
971 
972  Result Logout(common::AsyncContext* pAsyncContext, bool isInChangeStateAsync);
973  Result LogoutAsync();
974  bool IsLogoutCompleted() const;
975  Result GetLogoutResult() const;
976 
977  void LogoutAndWait();
978 
979  /*!
980  @cond PRIVATE
981  @brief ネットワークの終了処理です。
982  */
983  void CleanupNetwork();
984  //! @endcond
985 
986  /*!
987  @cond PRIVATE
988  @brief ソケットの終了処理です。
989  */
990  void FinalizeSocket();
991  //! @endcond
992 
993  /*!
994  @cond PRIVATE
995  @brief ソケットの終了処理です。
996  */
997  void FinalizeNetworkInterface();
998  //! @endcond
999 
1000  /*!
1001  @cond PRIVATE
1002  @brief インターネットサービスの終了処理です。
1003  */
1004  void FinalizeInetService();
1005  //! @endcond
1006 
1007  /*!
1008  @cond PRIVATE
1009  @brief Pia の終了処理です。
1010  */
1011  void FinalizeSession();
1012  //! @endcond
1013 
1014  /*!
1015  @brief ハンドリングタイプを State に変換します。
1016  @param[in] handlingType 変換するハンドリングタイプです。
1017  @return 変換後の State を返します。
1018  */
1020 
1021  /*!
1022  @brief CloneProtocol を取得します。
1023  @return CloneProtocol を返します。
1024  */
1026 
1027  /*!
1028  @brief PiaSync を用いた同期通信を開始します。
1029  @param[in] usingDataIdBitmap SyncProtocol::Initialize() に渡した Setting 構造体で正の値のサイズを設定した同期データの内、どの同期データを自分の送信対象にするか設定します。
1030  @param[in] delay 入力遅延を指定します。
1031  @param[in] sendPeriod 送信間隔(SyncProtocol::Step() を何回呼ぶごとに送信処理を行うか)を指定します。
1032  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1033  @retval ResultInvalidState この関数を呼び出せる SyncProtocol::State ではありません。または、通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1034  @retval ResultInvalidArgument 引数の指定が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1035  */
1036  Result SyncStart(int32_t usingDataIdBitmap, uint32_t delay, uint32_t sendPeriod);
1037 
1038  /*!
1039  @brief 同期通信を終了します。
1040  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1041  @retval ResultInvalidState この関数を呼び出せる SyncProtocol::State ではありません。または、通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1042  */
1043  Result SyncEnd();
1044 
1045  /*!
1046  @brief 自分だけ単独で同期通信を終了します。
1047  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1048  @retval ResultInvalidState この関数を呼び出せる SyncProtocol::State ではありません。または、すでに終了フレームが設定されています。または、通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1049  */
1050  Result SyncEndAlone();
1051 
1052  /*!
1053  @brief 同期通信を 1 フレーム進めます。
1054  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1055  @retval ResultInvalidState 通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1056  @retval ResultDataIsNotArrivedYet 同期データが他のステーションから届いていないためフレームを進めることができませんでした。framework::Framework::Update() を呼んだあと再度この関数を呼ぶ必要があります。アプリケーションで適切にハンドリングしてください。
1057  @retval ResultDataIsNotSet 自分が送信する同期データがまだ設定されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1058  @retval ResultTemporaryUnavailable 単独同期終了処理中です。
1059  */
1060  Result SyncStep();
1061 
1062  /*!
1063  @brief @ref sync::SyncProtocol::State_Synchronized となってからのフレーム数を取得します。
1064 
1065  @details @ref sync::SyncProtocol::State_Synchronized の間、@ref sync::SyncProtocol::Step に成功すると 1 進みます。
1066 
1067  @return @ref sync::SyncProtocol::State_Synchronized となってからのフレーム数です。
1068  @ref sync::SyncProtocol::State_Synchronized でなければ 0 を返しますが、@ref sync::SyncProtocol::State_Synchronized となった最初のフレームも 0 となりますので注意してください。
1069  */
1070  uint32_t GetSyncFrameNo();
1071 
1072  /*!
1073  @brief 同期通信の進行状態を取得します。
1074  @return 同期通信の進行状態が返されます。
1075  */
1077 
1078  /*!
1079  @brief PiaSync を用いて受信する同期データを取得します。
1080  @param[in] stationId 取得する同期データを送信するステーションの StationId です。
1081  @param[in] dataId 取得する同期データのデータ ID です。
1082  @param[out] pBuffer 同期データを格納するバッファのポインタです。
1083  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1084  @retval ResultInvalidState この関数を呼び出せる SyncProtocol::State ではありません。または、同期データを取得できないフレームです。または、通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1085  @retval ResultInvalidArgument 引数の指定が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1086  */
1087  Result GetSyncData(StationId stationId, uint32_t dataId, void* pBuffer);
1088 
1089  /*!
1090  @brief PiaSync を用いて送信する同期データを設定します。
1091  @param[in] dataId 設定する同期データの ID です。
1092  @param[in] pBuffer 設定する同期データです。
1093  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1094  @retval ResultInvalidState この関数を呼び出せる SyncProtocol::State ではありません。または、通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1095  @retval ResultInvalidArgument 引数の指定が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1096  @retval ResultAlreadyExists 同期データは既に設定されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1097  */
1098  Result SetSyncData(uint32_t dataId, const void* pBuffer);
1099 
1100  /*!
1101  @brief 同期データを取得できないフレームかどうかを取得します。
1102  @details 同期通信中の入力遅延変更機能を使用している場合は、同期データを取得できないフレームがあるため、この関数で同期データを取得できないフレームかを確認する必要があります。
1103  同期通信中の入力遅延変更機能を使用していない場合は、この関数を使用する必要はありません。
1104  @param[out] isNoDataFrame 同期データを取得できないフレームであるかです。
1105  @return 成功すれば、IsSuccess() が true を返す Result が返されます。
1106  @retval ResultInvalidState 呼び出し状態が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1107  @retval ResultInvalidArgument 引数の指定が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1108  */
1109  Result GetIsNoDataFrame(bool* isNoDataFrame);
1110 
1111  /*!
1112  @brief 実際に設定されている入力遅延の値を取得します。
1113  @return 入力遅延のフレーム数です。
1114  */
1115  uint32_t GetDelay();
1116 
1117  /*!
1118  @brief 入力遅延の最大値を取得します。
1119  @return 入力遅延のフレーム数の最大値です。
1120  */
1121  uint32_t GetMaxDelay();
1122 
1123  /*!
1124  @brief 入力遅延の変更依頼を同期データとして設定します。
1125  @details 依頼する入力遅延は、初期化時に @ref sync::SyncProtocol::FrameDelayMax 以下の値である必要があります。
1126  依頼する入力遅延として 0 を指定した場合は、変更依頼を行わないものとして扱われます。
1127  この関数が成功しても、依頼した入力遅延の値に変更されることは保証されません。
1128  同じフレームで複数の依頼を受け取った場合は、依頼された入力遅延の値の最大値が優先されます。
1129  入力遅延の変更依頼を同期データとして受け取った時点で、すでに他の依頼による入力遅延の変更中であった場合は、依頼は無視されます。
1130  @param[in] newDelay 依頼する入力遅延の値です。
1131  @return 成功すれば、IsSuccess() が true を返す Result が返されます。
1132  @retval ResultInvalidState 呼び出し状態が不正です。または、通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1133  @retval ResultInvalidArgument 引数の指定が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1134  @retval ResultAlreadyExists 既に設定されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1135  */
1136  Result RequestToChangeDelay(uint32_t newDelay);
1137 
1138  /*!
1139  @brief stationId のリストを取得します。
1140  @param[out] stationIdListBuf stationId のリストを格納するためのバッファです。
1141  @param[in] stationIdListBufLength stationIdListBuf のサイズ(リストの要素数)を指定してください。
1142  @param[out] stationNum ステーション数が格納されます。
1143  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1144  @retval ResultInvalidArgument 引数の指定が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1145  @retval ResultTemporaryUnavailable セッション移行処理中のため、一時的に API を利用できない状態です。ジョイントセッション機能使用時にのみ返ります。アプリケーションで適切にハンドリングしてください。
1146  */
1147  Result GetStationIdList(StationId* stationIdListBuf, uint32_t stationIdListBufLength, uint32_t &stationNum);
1148 
1149  /*!
1150  @brief StationId に対応する Station を得ます。
1151  @param[in] id StationId です。
1152  @return 指定した StationId に対応する Station が存在すれば、その Station を指すポインタが返ります。存在しなかったり、StationId が無効の場合は NULL ポインタが返ります。
1153  */
1155 
1156  /*!
1157  @brief セッション参加処理の進行状態を取得します。
1158  @return 参加処理の進行状態を返します。
1159  */
1160  State GetState() const
1161  {
1162  return m_State;
1163  }
1164 
1165  void SetState(State state)
1166  {
1167  m_State = state;
1168  }
1169 
1170  /*!
1171  @brief UnreliableProtocol を用いて、データを全ステーションに向けて送信します。
1172 
1173  @details データを送信します。ただし、この関数を呼び出しただけでは実際のデータ送信は行われません。
1174  この関数は、アプリケーションが渡したデータを Pia 内部のパケット生成処理用バッファにコピーします。
1175  その後、 PiaTransport のディスパッチ処理が実行されることで、パケット生成処理用バッファにコピー
1176  されていたデータ群がパケットにまとめられ、 Pia 内部の送信スレッドに渡されます。実際の送信処理は、
1177  この送信スレッドが定期的にパケットを無線モジュールに渡すことで行われます。
1178 
1179  @param[in] pData 送信したいデータの先頭を指すポインタ。
1180  @param[in] dataSize 送信データサイズ。単位はバイトです。 GetSendDataSizeMax() が返す値を超過してはいけません。
1181 
1182  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1183 
1184  @retval ResultInvalidArgument 引数に誤りがあります。送信データサイズが過大であった場合にも、このエラーが返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1185  @retval ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1186  @retval ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。
1187  @retval ResultTemporaryUnavailable ジョイントセッション処理が進行中のため、一時的に API を利用できない状態です。アプリケーションで適切にハンドリングしてください。
1188  */
1189  Result SendToAllUnreliable(const void* pData, uint32_t dataSize);
1190 
1191  /*!
1192  @brief ReliableProtocol を用いて、データを全ステーションに向けて送信します。
1193 
1194  @details この関数でセットされた送信データは、パケットに対して適切なサイズに分割され内部のバッファに保持されます。
1195  その後の @ref framework::Framework::Update() の中で順次パケットが作成され送信されていきます。
1196  送信してからしばらくたっても到達が確認できないデータは再送されます。
1197  再送までの時間は RTT に応じて自動的に調整されます。
1198  到達が確認できたデータはバッファから削除され、バッファはその後のデータ送信のために使う事ができるようになります。
1199 
1200  @param[in] pData 送信するデータのアドレスです。
1201  @param[in] dataSize 送信するデータのサイズ(バイト)です。
1202 
1203  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1204 
1205  @retval ResultInvalidState ReliableProtocol が初期化されていないか、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1206  @retval ResultInvalidArgument 引数が誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1207  @retval ResultNotInCommunication 指定された送信先と通信中ではありません。自分か指定した相手がセッション内に存在しません。アプリケーションで適切にハンドリングしてください。
1208  @retval ResultBufferIsFull 送信バッファに空きがありません。頻発する場合は、 Initialize() で指定する送信バッファのデータ数を増やすことを検討してください。アプリケーションで適切にハンドリングしてください。
1209  */
1210  Result SendToAllReliable(const void* pData, uint32_t dataSize);
1211 
1212  /*!
1213  @brief UnreliableProtocol を用いて、データを特定のステーションに向けて送信します。
1214 
1215  @details データを送信します。ただし、この関数を呼び出しただけでは実際のデータ送信は行われません。
1216  この関数は、アプリケーションが渡したデータを Pia 内部のパケット生成処理用バッファにコピーします。
1217  その後、 PiaTransport のディスパッチ処理が実行されることで、パケット生成処理用バッファにコピー
1218  されていたデータ群がパケットにまとめられ、 Pia 内部の送信スレッドに渡されます。実際の送信処理は、
1219  この送信スレッドが定期的にパケットを無線モジュールに渡すことで行われます。
1220 
1221  @param[in] destId 送信先の StationId 。
1222  @param[in] pData 送信したいデータの先頭を指すポインタ。
1223  @param[in] dataSize 送信データサイズ。単位はバイトです。 GetSendDataSizeMax() が返す値を超過してはいけません。
1224 
1225  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1226 
1227  @retval ResultInvalidArgument 引数に誤りがあります。送信データサイズが過大であった場合にも、このエラーが返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1228  @retval ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていなかったり、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1229  @retval ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。
1230  @retval ResultTemporaryUnavailable ジョイントセッション処理が進行中のため、一時的に API を利用できない状態です。アプリケーションで適切にハンドリングしてください。
1231  @retval ResultNotFound 指定された送信先が見つかりません。
1232  */
1233  Result SendUnreliable(StationId destId, const void* pData, uint32_t dataSize);
1234 
1235  /*!
1236  @brief ReliableProtocol を用いて、データを特定のステーションに向けて送信します。
1237 
1238  @details この関数でセットされた送信データは、パケットに対して適切なサイズに分割され内部のバッファに保持されます。
1239  その後の @ref framework::Framework::Update() の中で順次パケットが作成され送信されていきます。
1240  送信してからしばらくたっても到達が確認できないデータは再送されます。
1241  再送までの時間は RTT に応じて自動的に調整されます。
1242  到達が確認できたデータはバッファから削除され、バッファはその後のデータ送信のために使う事ができるようになります。
1243 
1244  @param[in] destId 送信先の @ref StationId です。
1245  @param[in] pData 送信するデータのアドレスです。
1246  @param[in] dataSize 送信するデータのサイズ(バイト)です。
1247 
1248  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1249 
1250  @retval ResultInvalidState ReliableProtocol が初期化されていないか、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1251  @retval ResultInvalidArgument 引数が誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1252  @retval ResultNotInCommunication 指定された送信先と通信中ではありません。自分か指定した相手がセッション内に存在しません。アプリケーションで適切にハンドリングしてください。
1253  @retval ResultBufferIsFull 送信バッファに空きがありません。頻発する場合は、 Initialize() で指定する送信バッファのデータ数を増やすことを検討してください。アプリケーションで適切にハンドリングしてください。
1254  @retval ResultTemporaryUnavailable ジョイントセッション処理が進行中のため、一時的に API を利用できない状態です。アプリケーションで適切にハンドリングしてください。
1255  @retval ResultNotFound 指定された送信先が見つかりません。アプリケーションで適切にハンドリングしてください。
1256  */
1257  Result SendReliable(StationId destId, const void* pData, uint32_t dataSize);
1258 
1259  /*!
1260  @brief UnreliableProtocol を用いて、受信したデータをバッファに読み取ります。
1261 
1262  @details データを受信します。ただし、この関数呼び出しが無線モジュールの受信処理実行のトリガーとなっている
1263  わけではありません。
1264  無線モジュールからパケットを受信する処理は、 Pia 内部の受信スレッドによって定期的に実行されています。
1265  この受信スレッドが受信したパケットは、 PiaTransport のディスパッチ処理が実行されるタイミングで
1266  パケット解析処理用バッファにコピーされ、データが復元されます。
1267  この関数は、このようにして復元されたデータをアプリケーション側で用意したバッファにコピーする処理を実行します。
1268 
1269  @param[out] pSrcId 読み取ったデータの送信元 StationId が書き込まれます。
1270  @param[out] pRecvBuf データの読み取り先バッファです。
1271  @param[out] pRecvDataSize 実際に読み取ることのできたデータサイズが書き込まれます。単位はバイトです。
1272  @param[in] recvBuffSize データの読み取り先バッファのサイズを指定します。単位はバイトです。
1273 
1274  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1275 
1276  @retval ResultInvalidArgument 引数に誤りがあります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1277  @retval ResultInvalidState UnreliableProtocol::Initialize() が呼ばれていなかったり、session のセットアップが完了していない可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1278  @retval ResultBufferShortage 読み取りバッファのサイズが不足しています。 recvBuffSize で指定したサイズを上回る大きさのデータが到着していた場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1279  @retval ResultNoData 受信バッファが空っぽで、読み取ることのできるデータがありませんでした。アプリケーションで適切にハンドリングしてください。
1280  @retval ResultNotInCommunication 通信が可能な状態ではありません。アプリケーションで適切にハンドリングしてください。
1281  @retval ResultTemporaryUnavailable ジョイントセッション処理が進行中のため、一時的に API を利用できない状態です。アプリケーションで適切にハンドリングしてください。
1282  */
1283  Result ReceiveUnreliable(StationId* pSrcId, void* pRecvBuf, uint32_t* pRecvDataSize, uint32_t recvBuffSize);
1284 
1285  /*!
1286  @brief ReliableProtocol を用いて、データを受信します。
1287 
1288  @details @ref framework::Framework::Update() のタイミングで受信したパケットは解析され、内部のバッファに蓄積されていきます。
1289  SendReliable() で分割されたデータがすべて届いていることが確認できているデータはこの関数で結合され取得できます。
1290  内部バッファもこのタイミングで解放され、次の受信のために使われます。
1291 
1292  @param[out] pSrcId 受信データの送信元の @ref StationId を書き込むバッファへのポインタです。
1293  @param[out] pRecvBuf 受信データを書き込むバッファへのポインタです。
1294  @param[out] pRecvDataSize 受信データのサイズを書き込むバッファへのポインタです。
1295  @param[in] recvBuffSize 受信データを書き込むバッファのサイズ(バイト)です。
1296 
1297  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1298 
1299  @retval ResultInvalidState 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1300  @retval ResultInvalidArgument 引数が誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1301  @retval ResultNotInCommunication 通信中でありません。セッションに参加していない状態と同じです。アプリケーションで適切にハンドリングしてください。
1302  @retval ResultNoData 受信したデータはありません。アプリケーションで適切にハンドリングしてください。
1303  @retval ResultBrokenData 受信したデータが大きすぎて受信バッファに入りきらないか渡されたバッファに書ききれません。セッションのスタートアップからやり直す必要があります。
1304  この Result はチートなどによって送信側が不正なデータを送ってきたときに発生する可能性があるため実行時にハンドリングする必要がありますが、
1305  送信側の挙動が正常な場合はこの Result が返らないようにプログラムを修正する必要があります。アプリケーションで適切にハンドリングしてください。
1306  */
1307  Result ReceiveReliable(StationId* pSrcId, void* pRecvBuf, uint32_t* pRecvDataSize, uint32_t recvBuffSize);
1308 
1309  /*!
1310  @brief @ref Framework::SendUnreliable() 、@ref Framework::SendToAllUnreliable() で一度に送信可能なデータサイズの最大値を取得します。単位はバイトです。
1311  @details この API 呼び出しで返される値は、アプリケーションによるパケットへの署名の有無に影響されます。
1312  @details セッション参加後にこの API を呼び出す必要があります。これよりも早いタイミングで呼び出すと、正しい値が返されないことがあります。
1313  @return SendUnreliable(), SendToAllUnreliable() で一度に送信可能なデータサイズの最大値が返されます。単位はバイトです。
1314 
1315  @see SendUnreliable, SendToAllUnreliable
1316  */
1317  uint32_t GetSendDataSizeMax();
1318 
1319  /*!
1320  @brief inet の初期化設定項目の登録を行います。
1321  @param[in] inetSetting setting 登録する設定項目です。
1322  */
1323  void RegisterInitializeInetSetting(const InitializeInetSetting& inetSetting);
1324 
1325  /*!
1326  @brief lan の初期化設定項目の登録を行います。
1327  @param[in] setting 登録する設定項目です。
1328  */
1329  void RegisterInitializeLanSetting(const InitializeLanSetting& setting);
1330 
1331  /*!
1332  @brief local の初期化設定項目の登録を行います。
1333  @param[in] setting 登録する設定項目です。
1334  */
1335  void RegisterInitializeLocalSetting(const InitializeLocalSetting& setting);
1336 
1337 #if NN_PIA_FRAMEWORK_ENABLE_PLAY_SETTING
1338  /*!
1339  @brief play の初期化設定項目の登録を行います。
1340  @param[in] setting 登録する設定項目です。
1341  */
1342  void RegisterInitializePlaySetting(const InitializePlaySetting& setting);
1343 #endif
1344 
1345  /*!
1346  @brief transport の初期化設定項目の登録を行います。
1347  @param[in] setting 登録する設定項目です。
1348  */
1349  void RegisterInitializeTransportSetting(const InitializeTransportSetting& setting);
1350 
1351  /*!
1352  @brief clone の初期化設定項目の登録を行います。
1353  @details setting.isAutoInitialize を true としてこのメソッドを呼ぶと、自動で clone の初期化を行います。
1354  @param[in] setting 登録する設定項目です。
1355  */
1356  void RegisterInitializeCloneSetting(const InitializeCloneSetting& setting);
1357 
1358  /*!
1359  @brief sync の初期化設定項目の登録を行います。
1360  @details setting.isAutoInitialize を true としてこのメソッドを呼ぶと、自動で sync の初期化を行います。
1361  @param[in] setting 登録する設定項目です。
1362  */
1363  void RegisterInitializeSyncSetting(const InitializeSyncSetting& setting);
1364 
1365  /*!
1366  @brief session の初期化設定項目の登録を行います。
1367  @param[in] setting 登録する設定項目です。
1368  */
1369  void RegisterInitializeSessionSetting(const InitializeSessionSetting& setting);
1370 
1371  /*!
1372  @brief NetworkInterface の初期化設定項目の登録を行います。
1373  @if NIN_DOC
1374  @details setting.isAutoInitialize を true としてこのメソッドを呼ぶと、自動的に NIFM の初期化を行います。
1375  @else
1376  @details setting.isAutoInitialize を true としてこのメソッドを呼ぶと、自動的に AC の初期化を行います。
1377  @endif
1378  @param[in] setting 登録する設定項目です。
1379  */
1380  void RegisterStartupNetworkSetting(const StartupNetworkSetting& setting);
1381 
1382  /*!
1383  @brief session のスタートアップ設定項目の登録を行います。
1384  @param[in] setting 登録する設定項目です。
1385  */
1386  void RegisterStartupSessionSetting(const StartupSessionSetting& setting);
1387 
1388  /*!
1389  @brief セッションを構築する際に必要な設定項目の登録を行います。
1390  @param[in] setting 登録する設定項目です。
1391  */
1392  void RegisterJoinRandomSessionSetting(const JoinRandomSessionSetting& setting);
1393 
1394 #if NN_PIA_EXPERIMENT_FRAMEWORK_JOINT_SESSION
1395  /*!
1396  @brief ジョイントセッションを構築する際に必要な設定項目の登録を行います。
1397  @param[in] setting 登録する設定項目です。
1398  */
1399  void RegisterJoinRandomJointSessionSetting(const JoinRandomSessionSetting& setting);
1400 #endif
1401 
1402  /*!
1403  @cond PRIVATE
1404  @brief CPUProfilingを行う際に必要な設定項目の登録を行います。
1405  @param[in] setting 登録する設定項目です。
1406  */
1407  void RegisterInitializeTuneSetting(const InitializeTuneSetting& setting);
1408  //! @endcond
1409 
1410  /*!
1411  @brief inet の初期化設定項目の登録解除を行います。
1412  */
1414 
1415  /*!
1416  @brief lan の初期化設定項目の登録解除を行います。
1417  */
1419 
1420  /*!
1421  @brief local の初期化設定項目の登録解除を行います。
1422  */
1424 
1425 #if NN_PIA_FRAMEWORK_ENABLE_PLAY_SETTING
1426  /*!
1427  @brief play の初期化設定項目の登録解除を行います。
1428  */
1429  void UnregisterInitializePlaySetting();
1430 #endif
1431 
1432  /*!
1433  @brief transport の初期化設定項目の登録解除を行います。
1434  */
1436 
1437  /*!
1438  @brief clone の初期化設定項目の登録解除を行います。
1439  */
1441 
1442  /*!
1443  @brief sync の初期化設定項目の登録解除を行います。
1444  */
1446 
1447  /*!
1448  @brief session の初期化設定項目の登録解除を行います。
1449  */
1451 
1452  /*!
1453  @brief NetworkInterface の初期化設定項目の登録解除を行います。
1454  */
1456 
1457  /*!
1458  @brief session のスタートアップ設定項目の登録解除を行います。
1459  */
1461 
1462  /*!
1463  @brief セッションを構築する際に必要な設定項目の登録解除を行います。
1464  */
1466 
1467 #if NN_PIA_EXPERIMENT_FRAMEWORK_JOINT_SESSION
1468  /*!
1469  @brief セッションを構築する際に必要な設定項目の登録解除を行います。
1470  */
1472 #endif
1473 
1474  /*!
1475  @cond PRIVATE
1476  @brief CPUProfilingを行う際に必要な設定項目の登録解除を行います。
1477  */
1478  void UnregisterInitializeTuneSetting();
1479  //! @endcond
1480 
1481  /*!
1482  @brief 全ての設定項目の登録解除を行います。
1483  */
1484  void UnregisterSettingAll();
1485 
1486  /*!
1487  @cond PRIVATE
1488  @brief セッションの状態が変化した場合に呼び出されるコールバックの関数の宣言を行います。
1489  @param[in] eventType 状態変化の内容を示す列挙型です。
1490  @param[in] stationId 状態変化が発生した対象の StationId です。
1491  @param[in] pApplicationParam アプリケーションが登録したパラメータを示すポインタです。
1492  */
1493  void SessionEventCallback(session::Session::EventType eventType, StationId stationId, void* pApplicationParam);
1494  //! @endcond
1495 
1496  /*!
1497  @brief レイテンシエミュレーション、およびパケロスエミュレーションに必要な設定をセットします。Release ビルド時には失敗します。
1498  @param[in] emulationParamArg レイテンシエミュレーション、およびパケロスエミュレーション用の設定です。
1499 
1500  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。
1501  @retval ResultInvalidState Pia の初期化が行われていない可能性があります。または Release ビルドです。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1502  @retval ResultInvalidArgument 引数が誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1503  */
1504  Result SetEmulationParam(const SetEmulationParamArg& emulationParamArg);
1505 
1506  /*!
1507  @cond PRIVATE
1508  @brief NetworkInterface 接続処理が正常に行われたか確認します。
1509  */
1510  bool IsNetworkInterfaceConnected();
1511  //! @endcond
1512 
1513  /*!
1514  @cond PRIVATE
1515  @brief NetworkType を取得します。
1516  */
1517  framework::NetworkType GetNetworkType()
1518  {
1519  return m_Setting.networkType;
1520  }
1521  //! @endcond
1522 
1523 #if NN_PIA_CTR
1524  /*!
1525  @brief ユニーク ID からローカル通信 ID を作成します。
1526 
1527  @details 業務部から割り当てられた 20bit のユニーク ID (タイトル固有の ID)から ローカル通信で使用する 32bit 値 (ローカル通信 ID) を生成します。<br>
1528  業務部からユニーク ID が割り当てられていない場合は、ゲームソフト試作用のユニーク ID ( 0xFF000 ~ 0xFF3FF ) を使用する必要があります。
1529  ローカル通信時に @ref State_SessionInitialized まで遷移済みであれば、有効な値が返ります。
1530 
1531  @attention 製品版では必ず業務部から割り当てられた ユニーク ID を使用する必要があります。
1532 
1533  @param[in] uniqueId ユニーク IDです。複数タイトル間で通信したい場合はどちらか片方のユニーク ID を指定する必要があります。
1534  @param[in] isTrial ユニーク ID が製品版と体験版で共通だった場合の対処用フラグです。製品版-体験版間での通信を行いたくない場合、 体験版側で true を指定する必要があります。製品版は常に false が指定されるよう注意してください。
1535 
1536  @return 作成されたローカル通信 ID が返ります。
1537  */
1538  uint32_t CreateLocalCommunicationId(uint32_t uniqueId, bool isTrial = false) const;
1539 #endif
1540 
1541 #if NN_PIA_NINTENDOSDK
1542  /*!
1543  @if NIN_DOC
1544  @brief ResultSdkViewerResultError 発生時に SDK の API から返った nn::Result を取得します。
1545  @endif
1546  */
1547  nn::Result GetLastSdkResult()
1548  {
1549  return m_LastSdkResult;
1550  }
1551 
1552  /*!
1553  @cond PRIVATE
1554  @if NIN_DOC
1555  @brief ResultSdkViewerResultError 発生時に SDK の API から返った nn::Result をセットします。
1556  @endif
1557  */
1558  void SetLastSdkResult(nn::Result result)
1559  {
1560  m_LastSdkResult = result;
1561  }
1562  //! @endcond
1563 #endif
1564 
1565 private:
1566  enum AsyncProcessingName
1567  {
1568  AsyncProcessingName_Nothing = 0,
1569  AsyncProcessingName_ChangeState,
1570  AsyncProcessingName_HandleError,
1571  AsyncProcessingName_CreateSession,
1572  AsyncProcessingName_BrowseSession,
1573  AsyncProcessingName_JoinSession,
1574  AsyncProcessingName_Login,
1575  AsyncProcessingName_Logout
1576  };
1577 
1578  Result UpdateCommon();
1579  Result UpdateInetService();
1580  Result CheckConnectionSession();
1581  Result CheckConnectionInet();
1582  Result CheckConnectionLocal();
1583  Result CheckConnectionLan();
1584 
1585  // 汎用内部コンテキストチェック
1586  void ResetInternalAsyncState();
1587 
1588  // 汎用内部コンテキストチェック
1589  bool IsAsyncProcessCompleted(AsyncProcessingName processingName) const;
1590 
1591  // 汎用内部コンテキストチェック
1592  Result GetAsyncProcessResult(AsyncProcessingName processingName) const;
1593 
1594  void SetupSessionStartupSettingCommon(session::Session::StartupSetting* pStartupSetting) const;
1595 
1596 private:
1597  CloneFacade* m_pCloneFacade;
1598  InetService* m_pInetService;
1599  LanFacade* m_pLanFacade;
1600  LocalFacade* m_pLocalFacade;
1601  NetworkService* m_pNetworkService;
1602  ReckoningFacade* m_pReckoningFacade;
1603  SessionFacade* m_pSessionFacade;
1604  SyncFacade* m_pSyncFacade;
1605  TransportFacade* m_pTransportFacade;
1606  TuneFacade* m_pTuneFacade;
1607 
1608 #if NN_PIA_NINTENDOSDK
1609  nn::Result m_LastSdkResult;
1610 #endif
1611 
1612  bool m_StartupFlag;
1613  State m_State;
1614  bool m_IsLeaving;
1615  ChangeStateJob* m_pChangeStateJob;
1616  LoginJob* m_pLoginJob;
1617  common::AsyncContext m_InternalContext;
1618  AsyncProcessingName m_CurrentAsyncProcessingName;
1619  Setting m_Setting;
1620  InitializeInetSetting m_InitializeInetSetting;
1621  InitializeLanSetting m_InitializeLanSetting;
1622  InitializeLocalSetting m_InitializeLocalSetting;
1623 #if NN_PIA_FRAMEWORK_ENABLE_PLAY_SETTING
1624  InitializePlaySetting m_InitializePlaySetting;
1625 #endif
1626  InitializeTransportSetting m_InitializeTransportSetting;
1627  InitializeCloneSetting m_InitializeCloneSetting;
1628  InitializeSyncSetting m_InitializeSyncSetting;
1629  InitializeSessionSetting m_InitializeSessionSetting;
1630  StartupNetworkSetting m_StartupNetworkSetting;
1631  StartupSessionSetting m_SessionStartupSetting;
1632  JoinRandomSessionSetting* m_pJoinRandomSessionSetting;
1633  InitializeTuneSetting m_CpuProfilingSetting;
1634 
1635 #if NN_PIA_EXPERIMENT_FRAMEWORK_JOINT_SESSION
1636  // n2908: ジョイントセッション用 RandomSessionSetting
1637  JoinRandomSessionSetting* m_pJoinRandomJointSessionSetting;
1638  // n2908: セッションマイグレーション中チェック用
1639  bool m_IsSessionMigrating;
1640 #endif
1641 
1642 #if NN_PIA_CTR
1643  static const uint32_t MaxSendThreadBufferNum = 32;
1644  static const uint32_t MaxReceiveThreadBufferNum = 32;
1645 #else
1646  static const uint32_t MaxSendThreadBufferNum = 64;
1647  static const uint32_t MaxReceiveThreadBufferNum = 64;
1648 #endif
1649  static Framework* s_pInstance;
1650 
1651 private:
1652  Framework();
1653 
1654  NN_PIA_DISALLOW_COPY(Framework);
1655 };
1656 }
1657 }
1658 } // end of namespace nn::pia::framework