CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
inet_NexDebugSession.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/inet/inet_Definitions.h>
17 
18 #if NN_PIA_ENABLE_NEX && NN_PIA_UNDER_DEVELOP
19 
20 #include <nn/pia/inet/inet_NexSessionTypes.h>
21 #include <nn/pia/inet/inet_NexCreateSessionSetting.h>
22 #include <nn/pia/inet/inet_NexUpdateSessionSetting.h>
23 #include <nn/pia/common/common_AsyncContext.h>
24 
25 #if NN_PIA_CTR
26 #pragma diag_suppress 1300 //n1769 ARMCC 用プラグマ。
27 #endif
28 #include <nex.h>
29 #if NN_PIA_CTR
30 #pragma diag_warning 1300 //n1769 ARMCC 用プラグマ。
31 #endif
32 
33 namespace nn
34 {
35 namespace pia
36 {
37 namespace session
38 {
39 // 先行宣言
40 class IMatchmakeSession;
41 }
42 }
43 }
44 namespace nn
45 {
46 namespace pia
47 {
48 namespace inet
49 {
50 class NexDebugSessionJob;
51 
52 /*!
53 @brief (デバッグ用)デバッグ用ダミーセッションを扱うクラスです。(製品版には含まれません)
54 */
56 {
57 public:
58  /*!
59  @brief インスタンスを作成します(シングルトンパターン)。
60 
61  @return 関数の実行結果を返します。 処理が失敗した場合、以下を返します。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
62  @retval nn::pia::ResultNotInitialized inet モジュールが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
63  @retval nn::pia::ResultInvalidState 呼び出すタイミングが間違っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
64  @retval nn::pia::ResultAlreadyExists 既にインスタンスは作成されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
65  */
66  static Result CreateInstance();
67 
68  /*!
69  @brief インスタンスを破棄します(シングルトンパターン)。
70  @details インスタンスが作成されていないときにこの関数が呼び出された場合は、何も実行せずに関数から返ります。
71  */
72  static void DestroyInstance();
73 
74  /*!
75  @brief NexDebugSession インスタンスへのポインタを取得します(シングルトンパターン)。
76 
77  @return インスタンスが作成されていないときは、 NULL ポインタが返ります。
78  */
80  {
81  return s_pInstance;
82  }
83  /*!
84  @brief NexDebugSession 機能をスタートアップします。
85  @details NexFacade::Bind より後に呼び出す必要があります。
86 
87  @return 関数の実行結果を返します。 処理が失敗した場合、以下を返します。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
88  @retval nn::pia::ResultInvalidState 呼び出すタイミングが間違っています。NexFacade のインスタンス作成、NexFacade::Bind が呼び出されているか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
89  */
90  Result Startup();
91 
92  /*!
93  @brief NexDebugSession 機能をクリーンアップします。
94  @details NexFacade::Unbind より前に呼び出す必要があります。
95  */
96  void Cleanup();
97 
98  /*!
99  @brief ダミーセッションの構築を行います。
100  @details ダミーセッションの構築を行う非同期処理を開始します。
101  構築したダミーセッションのホストになります。クライアントはダミーセッションに参加できません。
102  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
103  処理の完了は @ref IsCreateDummySessionCompleted でチェックし、結果は @ref GetCreateDummySessionResult で確認できます。
104  構築されたダミーセッションのセッション ID は @ref GetCreatedDummySessionId で取得できます。
105 
106  @param[in] createSessionSetting セッションを作成する際の条件
107 
108  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
109  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
110  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、Session::Startup を呼び出していないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
111 
112  @see IsCreateDummySessionCompleted, GetCreateDummySessionResult, GetCreatedDummySessionId
113  */
114  Result CreateDummySessionAsync(const NexCreateSessionSetting& createSessionSetting);
115 
116  /*!
117  @brief CreateDummySessionAsync の非同期処理の完了をチェックします。
118  @details @ref CreateDummySessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
119 
120  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
121 
122  @see CreateDummySessionAsync, GetCreateDummySessionResult
123  */
125 
126  /*!
127  @brief CreateDummySessionAsync の非同期処理の結果を取得します。
128  @details @ref CreateDummySessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
129 
130  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
131  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
132  @retval nn::pia::ResultInvalidState 21個以上のダミーセッションを構築しようとしました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
133  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
134  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
135  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
136  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
137  @if NIN_DOC
138  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
139  @endif
140 
141  @see CreateDummySessionAsync, IsCreateDummySessionCompleted
142  */
144 
145  /*!
146  @brief 構築したダミーセッションのセッション ID を取得します。
147  @return 構築したダミーセッションのセッション ID を返します。
148  */
149  uint32_t GetCreatedDummySessionId() const;
150 
151  /*!
152  @brief ダミーセッションの削除を行います。
153  @details ダミーセッションの削除を行う非同期処理を開始します。
154  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
155  処理の完了は @ref IsDestroyDummySessionCompleted でチェックし、結果は @ref GetDestroyDummySessionResult で確認できます。
156 
157  @param[in] sessionId 削除するダミーセッションのセッション ID
158 
159  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
160  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、Session::Startup を呼び出していないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
161 
162  @see IsDestroyDummySessionCompleted, GetDestroyDummySessionResult
163  */
164  Result DestroyDummySessionAsync(uint32_t sessionId);
165 
166  /*!
167  @brief DestroyDummySessionAsync の非同期処理の完了をチェックします。
168  @details @ref DestroyDummySessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
169 
170  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
171 
172  @see DestroyDummySessionAsync, GetDestroyDummySessionResult
173  */
175 
176  /*!
177  @brief DestroyDummySessionAsync の非同期処理の結果を取得します。
178  @details @ref DestroyDummySessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
179 
180  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
181  @retval nn::pia::ResultInvalidState ホストではないセッションを削除しようとしました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
182  @retval nn::pia::ResultNotFound 削除しようとしたセッションが見つかりませんでした。アプリケーションで適切にハンドリングしてください。
183  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
184  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
185  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
186  @if NIN_DOC
187  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
188  @endif
189 
190  @see DestroyDummySessionAsync, IsDestroyDummySessionCompleted
191  */
193 
194  /*!
195  @brief ダミーセッションの設定更新を行います。
196  @details ダミーセッションの設定更新を行う非同期処理を開始します。
197  開始した処理は @ref nn::pia::common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
198  処理の完了は @ref IsUpdateDummySessionCompleted でチェックし、結果は @ref GetUpdateDummySessionResult で確認できます。
199 
200  @param[in] sessionId 設定更新するダミーセッションのセッション ID
201  @param[in] updateSessionSetting セッションの更新設定
202 
203  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
204  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、Session::Startup を呼び出していないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
205 
206  @see IsUpdateDummySessionCompleted, GetUpdateDummySessionResult
207  */
208  Result UpdateDummySessionAsync(uint32_t sessionId, const NexUpdateSessionSetting& updateSessionSetting);
209 
210  /*!
211  @brief UpdateDummySessionAsync の非同期処理の完了をチェックします。
212  @details @ref UpdateDummySessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
213 
214  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
215 
216  @see UpdateDummySessionAsync, GetUpdateDummySessionResult
217  */
219 
220  /*!
221  @brief UpdateDummySessionAsync の非同期処理の結果を取得します。
222  @details @ref UpdateDummySessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
223 
224  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
225  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
226  @retval nn::pia::ResultInvalidState ホストではないセッションを更新しようとしました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
227  @retval nn::pia::ResultNotFound 更新しようとしたセッションが見つかりませんでした。アプリケーションで適切にハンドリングしてください。
228  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
229  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
230  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
231  @if NIN_DOC
232  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
233  @endif
234 
235  @see UpdateDummySessionAsync, IsUpdateDummySessionCompleted
236  */
238 
239  /*!
240  @cond PRIVATE
241  */
242  /// @endcond
243 
244 private:
245  // シングルトンインスタンスへのポインタです。
246  static NexDebugSession* s_pInstance;
247 
248  /*!
249  @brief シングルトンパターンのため、コンストラクタは封印します。
250  */
251  NexDebugSession();
252 
253  /*!
254  @brief シングルトンパターンのため、デストラクタは封印します。
255  */
256  virtual ~NexDebugSession();
257 
258  /*!
259  @brief シングルトンパターンのため、コピーコンストラクタは封印します。
260  */
262 
263  /*!
264  @brief シングルトンパターンのため、代入演算子は封印します。
265  */
266  NexDebugSession& operator=(const NexDebugSession&);
267 
268  virtual Result initialize();
269  virtual void finalize();
270 
271  uint8_t* m_pMatchMakingClientBuffer;
272  nn::nex::MatchmakeExtensionClient* m_pMatchMakingClient;
273 
274  NexDebugSessionJob* m_pDebugSessionJob;
275  bool m_IsStartedup;
276  common::AsyncContext m_InternalAsyncContext;
277  uint32_t m_AsyncProcessType;
278 };
279 }
280 }
281 } // end of namespace nn::pia::inet
282 
283 #endif