CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
framework_Definitions.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 // このモジュールの全クラスのヘッダでインクルードするヘッダを列挙します。
17 #include <nn/pia/pia_Definitions.h>
18 #include <nn/pia/pia_Assert.h>
19 #include <nn/pia/common/common_RootObject.h>
20 #include <nn/pia/common/common_Trace.h>
21 #include <nn/pia/common/common_Report.h>
22 #include <nn/pia/session/session_Session.h>
23 #include <nn/pia/clone/clone_CloneProtocol.h>
24 #include <nn/pia/sync/sync_SyncProtocol.h>
25 #include <nn/pia/lan/lan_LanJoinRandomSessionSetting.h>
26 
27 #if NN_PIA_NINTENDOSDK_WIN
28 #define NN_PIA_FRAMEWORK_ENABLE_NEX 0
29 #else
30 
31 #if NN_PIA_ENABLE_NEX
32 #define NN_PIA_FRAMEWORK_ENABLE_NEX 1
33 #else
34 #define NN_PIA_FRAMEWORK_ENABLE_NEX 0
35 #endif
36 
37 #endif
38 
39 #if NN_PIA_A || NN_PIA_B
40 #define NN_PIA_FRAMEWORK_ENABLE_PLAY 0
41 #define NN_PIA_FRAMEWORK_ENABLE_DIRECT 1
42 #else
43 #define NN_PIA_FRAMEWORK_ENABLE_PLAY 0
44 #define NN_PIA_FRAMEWORK_ENABLE_DIRECT 0
45 #endif
46 
47 #define NN_PIA_FRAMEWORK_ENABLE_INET (NN_PIA_FRAMEWORK_ENABLE_NEX || NN_PIA_FRAMEWORK_ENABLE_PLAY)
48 
49 #if NN_PIA_FRAMEWORK_ENABLE_NEX
50 #include <nn/pia/inet/inet_NexJoinRandomSessionSetting.h>
51 #endif
52 
53 //n1589:Settingが必要がなったときに使用する
54 #define NN_PIA_FRAMEWORK_ENABLE_PLAY_SETTING 0
55 
56 #if NN_PIA_FRAMEWORK_ENABLE_PLAY
57 #include <nn/pia/play/play_PlayJoinRandomSessionSetting.h>
58 #include <jni.h>
59 #endif
60 
61 #if NN_PIA_FRAMEWORK_ENABLE_DIRECT
62 #include <nn/pia/direct/direct_DirectNetworkSetting.h>
63 #if !NN_PIA_B // iosでもビルドが通るように
64 #include <jni.h>
65 #endif
66 #endif
67 
68 #if NN_PIA_CTR || NN_PIA_NINTENDOSDK_NX || NN_PIA_FRAMEWORK_ENABLE_DIRECT
69 #define NN_PIA_ENABLE_LOCAL 1
70 #else
71 #define NN_PIA_ENABLE_LOCAL 0
72 #endif
73 
74 //n2908: Framework ジョイントセッション有効化マクロ
75 #define NN_PIA_EXPERIMENT_FRAMEWORK_JOINT_SESSION 1
76 
77 #if NN_PIA_CTR
78 #include <nn/pia/local/local_UdsNetworkSetting.h>
79 #elif NN_PIA_NINTENDOSDK
80 #include <nn/pia/local/local_LdnNetworkSetting.h>
81 #include <nn/socket.h>
82 #include <nn/account.h>
83 #include <nn/account/account_Selector.h>
84 #include <nn/err.h>
85 #include <nn/err/err_Types.h>
86 #endif
87 
88 /*!
89 モジュール内で共通して参照する列挙型やtypedefをまとめたヘッダファイルです。
90 */
91 namespace nn
92 {
93 namespace pia
94 {
95 namespace framework
96 {
97 /*!
98 @brief ネットワークの種類を列挙しています。
99 */
101 {
102  NetworkType_Local = 0,
103  NetworkType_Inet,
104  NetworkType_Lan
105 };
106 
107 /*!
108 @brief framework の初期化に必要なデータを持つ構造体です。
109 */
111 {
112  uint8_t* piaBuffer; //!< Pia 全体のバッファです。
113  uint32_t piaBufferSize; //!< Pia 全体のバッファサイズです。
114  uint32_t cachedPrintBufferSize; //!< @cond CTR_DOC キャッシュするバッファのサイズ(バイト)を指定します。512以上の値を指定する必要があります。 @endcond
115  NetworkType networkType; //!< 使用するインターネットの種類です。
116  uint64_t traceFlags; //!< トレースフラグです。
117 
118  /*!
119  @brief デフォルトコンストラクタです。
120  */
122  {
123  Reset();
124  }
125 
126  /*!
127  @brief デフォルトの値を設定します。
128  */
129  void Reset()
130  {
131  piaBuffer = NULL;
132  piaBufferSize = 0;
134  networkType = framework::NetworkType_Inet;
136  }
137 
138  /*!
139  @brief 構造体の中身をトレースします。
140  */
141  void Trace()
142  {
143  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeFrameworkSetting] piaBufferSize:%u, cachedPrintBufferSize:%u, networkType:%d, traceFlags:%llu", piaBufferSize, cachedPrintBufferSize, networkType, traceFlags);
144  }
145 };
146 
147 /*!
148 @brief inet の初期化に必要なデータを持つ構造体です。
149 */
151 {
152  // InitializeInetService のための設定項目
153  bool isAutoInitializeAndLogin; //!< InitializeInetService とログインを自動で行うかどうか指定します。
154  uint32_t gameId; //!< ゲームサーバーにログインする際に指定したゲームサーバー ID です。
155 
156 #if NN_PIA_FRAMEWORK_ENABLE_NEX
157  uint8_t* nexMemory; //!< NEX で使用するメモリ。@if NIN_DOC 4 KB アラインメントされている必要があります。また、16 KB 以上である必要があります。 @endif
158  uint32_t totalMemorySize; //!< @ref nexMemory のサイズです。
159  uint32_t emergencyMemorySize; //!< @ref nexMemory の内、NEX のヒープ枯渇時に使用する緊急用メモリとして割り当てるサイズです。
160  common::FixedString<8> accessKey; //!< ゲームサーバーにログインする際に指定したアクセスキーです
161 #endif
162 
163 #if NN_PIA_FRAMEWORK_ENABLE_PLAY
164  jobject appActivity; //!< isAutoInitializeAndLogin が true の場合のみ設定する必要があります。
165  gpg::GameServices* pGameServices; //!< isAutoInitializeAndLogin が false の場合のみ設定する必要があります。true の場合は設定しないでください。
166 #endif
167 
168 #if NN_PIA_NINTENDOSDK
169  common::FixedString<15> hostName; //!< デバッグログイン用のアドレスです。
170  uint16_t port; //!< デバッグログイン用のポート番号です。
171  common::FixedString<64> hostUri; //!< デバッグログイン用のホスト Uriです。
172  common::FixedString<20> userName; //!< デバッグログイン用のユーザーネームです。
173  common::FixedString<32> password; //!< デバッグログイン用のパスワードです。
174  nn::account::UserHandle userHandle; //!< ログインするユーザのハンドルを指定します。
175 #endif
176 
177  /*!
178  @brief デフォルトコンストラクタです。
179  */
181  {
182  Reset();
183  }
184 
185  /*!
186  @brief デフォルトの値を設定します。
187  */
188  void Reset()
189  {
190  isAutoInitializeAndLogin = false;
191  gameId = 0;
192 
193 #if NN_PIA_FRAMEWORK_ENABLE_NEX
194  nexMemory = NULL;
195  totalMemorySize = 0;
197  accessKey.Clear();
198 #endif
199 
200 #if NN_PIA_FRAMEWORK_ENABLE_PLAY
201  pGameServices = NULL;
202 #endif
203 
204 #if NN_PIA_NINTENDOSDK
205  hostName.Clear();
206  port = 0;
207  hostUri.Clear();
208  userName.Clear();
209  password.Clear();
210 #endif
211  }
212 
213  /*!
214  @brief 構造体の中身をトレースします。
215  */
216  void Trace()
217  {
218 #if NN_PIA_FRAMEWORK_ENABLE_NEX
219  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeInetSetting] totalMemorySize:%u, emergencyMemorySize:%u, isAutoInitialize:%d, gameId:%u, accessKey:%s", totalMemorySize, emergencyMemorySize, isAutoInitializeAndLogin, gameId, accessKey.GetCharArray());
220 #endif
221 #if NN_PIA_FRAMEWORK_ENABLE_PLAY
222  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeInetSetting] pGameServices:%p", pGameServices);
223 #endif
224 #if NN_PIA_NINTENDOSDK
225  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeInetSetting] hostName:%s, port:%u, hostUri:%s, userName:%s, password:%s", hostName.GetCharArray(), port, hostUri.GetCharArray(), userName.GetCharArray(), password.GetCharArray());
226 #endif
227  }
228 
229  /*!
230  @brief コピーします。
231  */
232  void Copy(const InitializeInetSetting& setting)
233  {
235  gameId = setting.gameId;
236 
237 #if NN_PIA_FRAMEWORK_ENABLE_NEX
238  nexMemory = setting.nexMemory;
241  accessKey.Copy(setting.accessKey);
242 #endif
243 
244 #if NN_PIA_FRAMEWORK_ENABLE_PLAY
245  appActivity = setting.appActivity;
246  pGameServices = setting.pGameServices;
247 #endif
248 
249 #if NN_PIA_NINTENDOSDK
250  hostName.Copy(setting.hostName);
251  port = setting.port;
252  hostUri.Copy(setting.hostUri);
253  userName.Copy(setting.userName);
254  password.Copy(setting.password);
255  userHandle = setting.userHandle;
256 #endif
257  }
258 
259 };
260 
261 /*!
262 @brief lan の初期化に必要なデータを持つ構造体です。
263 */
265 {
266  /*!
267  @brief デフォルトコンストラクタです。
268  */
270  {
271  Reset();
272  }
273 
274  /*!
275  @brief デフォルトの値を設定します。
276  */
277  void Reset()
278  {
279  }
280 
281  /*!
282  @brief 構造体の中身をトレースします。
283  */
284  void Trace()
285  {
286  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeLanSetting] ");
287  }
288 };
289 
290 /*!
291 @brief local の初期化に必要なデータを持つ構造体です。
292 */
294 {
295 #if NN_PIA_CTR
296  uint8_t applicationVersion; //!< アプリケーションのバージョンです。構築されたネットワークは、この値が異なるバージョンのアプリケーションから発見はされますが、接続には失敗します。
297  uint32_t receiveBufferSize; //!< 受信バッファサイズです。@ref local::UdsReceiveBufferSizeMin 以上、かつ、4096 の倍数である必要があります。
298  uint32_t scanBufferSize; //!< スキャン用バッファサイズです。@ref local::UdsScanBufferSizeMin 以上である必要があります。
299 #elif NN_PIA_NINTENDOSDK
300  int localCommunicationVersion; //!< ローカル通信バージョンです。アプリケーションへのパッチの適用などで通信の仕様が変わる場合に、ローカル通信バージョンをインクリメントしておくことで、通信の互換性がないことを表明できます。このバージョンが異なるネットワークは、探索結果として取得することはできますが、接続しようとすると失敗します。@ref local::LdnLocalCommunicationVersionMin 以上、@ref local::LdnLocalCommunicationVersionMax 以下の値を指定する必要があります。
301 #elif NN_PIA_FRAMEWORK_ENABLE_DIRECT
302 #if NN_PIA_A
303  JavaVM *pJavaVm; // Java のオブジェクトを扱うために必要
304  jclass piaDirectClass; // java の PiaDirect クラス
305  jobject contextObject; // Java の Context
306 #elif NN_PIA_B
307 #endif
308 #endif
309 
310  /*!
311  @brief デフォルトコンストラクタです。
312  */
314  {
315  Reset();
316  }
317 
318  /*!
319  @brief デフォルトの値を設定します。
320  */
321  void Reset()
322  {
323 #if NN_PIA_CTR
324  applicationVersion = 0;
327 #elif NN_PIA_NINTENDOSDK
328  localCommunicationVersion = local::LdnLocalCommunicationVersionMin;
329 #elif NN_PIA_FRAMEWORK_ENABLE_DIRECT
330 #if NN_PIA_A
331  pJavaVm = NULL;
332  piaDirectClass = 0;
333  contextObject = 0;
334 #elif NN_PIA_B
335 #endif
336 #endif
337  }
338 
339  /*!
340  @brief 構造体の中身をトレースします。
341  */
342  void Trace()
343  {
344 #if NN_PIA_CTR
345  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeLocalSetting] applicationVersion:%u, receiveBufferSize:%u, scanBufferSize:%u", applicationVersion, receiveBufferSize, scanBufferSize);
346 #elif NN_PIA_NINTENDOSDK
347  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeLocalSetting] localCommunicationVersion:%d", localCommunicationVersion);
348 #endif
349  }
350 };
351 
352 #if 0
353 #if NN_PIA_FRAMEWORK_ENABLE_PLAY
354 /*!
355 @brief play の初期化に必要なデータを持つ構造体です。
356 */
357 struct InitializePlaySetting
358 {
359  InitializePlaySetting()
360  {
361  Reset();
362  }
363 
364  /*!
365  @brief デフォルトの値を設定します。
366  */
367  void Reset()
368  {
369  }
370 
371  /*!
372  @brief 構造体の中身をトレースします。
373  */
374  void Trace()
375  {
376  }
377 };
378 #endif
379 #endif
380 
381 /*!
382 @brief transport の初期化に必要なデータを持つ構造体です。
383 */
385 {
386  uint16_t maxStationNum; //!< 一つのネットワークに参加可能な最大 Station 数を指定します。
387  int32_t analysisInterval; //!< TransportAnalyzer 機能による測定結果を自動的にコンソールに出力する間隔です。単位は秒です。0 を指定した場合、出力は自動では行われなくなり、データの取得はアプリケーションに委ねられます。
388 
389  /*!
390  @brief デフォルトコンストラクタです。
391  */
393  {
394  Reset();
395  }
396 
397  /*!
398  @brief デフォルトの値を設定します。
399  */
400  void Reset()
401  {
402  maxStationNum = 8;
403  analysisInterval = 0;
404  }
405 
406  /*!
407  @brief 構造体の中身をトレースします。
408  */
409  void Trace()
410  {
411  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeTransportSetting] maxStationNum:%u, analysisInterval:%d", maxStationNum, analysisInterval);
412  }
413 };
414 
415 /*!
416 @brief clone の初期化に必要なデータを持つ構造体です。
417 */
419 {
420  bool isAutoInitialize; //!< InitializeClone を行うかどうか
421  float clockPerSec; //!< 1 秒あたりに進める時刻の値を指定します。
422  uint32_t dataCompressionLevel; //!< 送信データの圧縮レベルを指定します。
423  int ackBufferNum; //!< Ack 用バッファの数を指定します。
424 
425  /*!
426  @brief デフォルトコンストラクタです。
427  */
429  {
430  Reset();
431  }
432 
433  /*!
434  @brief デフォルトの値を設定します。
435  */
436  void Reset()
437  {
438  isAutoInitialize = false;
439  clockPerSec = 1000.0f;
441  ackBufferNum = 32;
442  }
443 
444  /*!
445  @brief 構造体の中身をトレースします。
446  */
447  void Trace()
448  {
449  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeCloneSetting] clockPerSec:%f, dataCompressionLevel:%u, isAutoInitialize:%d, ackBufferNum:%d", clockPerSec, dataCompressionLevel, isAutoInitialize, ackBufferNum);
450  }
451 };
452 
453 /*!
454 @brief sync の初期化に必要なデータを持つ構造体です。
455 */
457 {
458  bool isAutoInitialize; //!< InitializeSync を行うかどうか指定します。
459  bool isChangeDelayEnabled; //!< 同期通信中の入力遅延変更機能を使用できるようにするかどうか指定します。
460  uint32_t dataUnitSize[sync::SyncProtocol::DataIdNum]; //!< 各データ ID ごとに、同期データのサイズを設定します。使用しないデータ ID には 0 を指定します。
461  uint32_t timeoutFrame; //!< タイムアウトまでのフレーム数を設定します。
462  uint32_t dataCompressionLevel; //!< 同期データの圧縮レベルを指定します。
463 
464  /*!
465  @brief デフォルトコンストラクタです。
466  */
468  {
469  Reset();
470  }
471 
472  /*!
473  @brief デフォルトの値を設定します。
474  */
475  void Reset()
476  {
477  isAutoInitialize = false;
478  isChangeDelayEnabled = false;
479  for (int i = 0; i < sync::SyncProtocol::DataIdNum; ++i)
480  {
481  dataUnitSize[i] = 0;
482  }
483  timeoutFrame = 240;
485  }
486 
487  /*!
488  @brief 構造体の中身をトレースします。
489  */
490  void Trace()
491  {
492  nn::pia::common::StringStream ss;
493  ss << "{";
494  for (int i = 0; i < sync::SyncProtocol::DataIdNum; ++i)
495  {
496  ss << dataUnitSize[i];
497  if (i + 1 < sync::SyncProtocol::DataIdNum)
498  {
499  ss << ", ";
500  }
501  else
502  {
503  ss << "}";
504  }
505  }
506  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeSyncSetting] dataUnitSize:%s, timeoutFrame:%u, dataCompressionLevel:%u, isAutoInitialize:%d, isChangeDelayEnabled:%d", ss.CStr(), timeoutFrame, dataCompressionLevel, isAutoInitialize, isChangeDelayEnabled);
507  }
508 };
509 
510 /*!
511 @brief session の初期化に必要なデータを持つ構造体です。
512 */
514 {
515  session::NetworkTopology networkTopology; //!< ネットワークトポロジの設定をします。
516  session::Session::SessionEventCallback sessionEventCallback; //!< セッションの状態が変化した場合に呼び出したいコールバック関数を設定します。
517  uint16_t browsedSessionInfoListNum; //!< ブラウズ可能なセッションの数です。
518 
519  /*!
520  @brief デフォルトコンストラクタです。
521  */
523  {
524  Reset();
525  }
526 
527  /*!
528  @brief デフォルトの値を設定します。
529  */
530  void Reset()
531  {
533  sessionEventCallback = NULL;
535  }
536 
537  /*!
538  @brief 構造体の中身をトレースします。
539  */
540  void Trace()
541  {
542  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeSessionSetting] networkTopology:%d, browsedSessionInfoListNum:%u", networkTopology, browsedSessionInfoListNum);
543  }
544 };
545 
546 /*!
547 @brief ネットワーク(ネットワークインターフェース、ソケット)のスタートアップに必要なデータを持つ構造体です。
548 */
550 {
551  bool isAutoInitializeNetworkInterface; //!< InitializeNetworkInterface を行うかどうかを指定します。
552  bool isAutoInitializeSocket; //!< InitializeSocket を行うかどうか指定します。
553  void* memoryPool; //!< ソケットライブラリが使用するワーク領域のアドレスを指定します。BUFFER_ALIGNMENT(4096 バイト) 整合である必要があります。デバイスメモリは使用できません。
554  size_t memoryPoolSize; //!< ワーク領域のサイズを指定します。4 KB の倍数である必要があります。
555  size_t allocatorPoolSize; //!< ワーク領域のうち、ソケットの送受信バッファの割り当てに使用するサイズを指定します。BUFFER_UNITSIZE_FOR_SOCKETS(4096 バイト) の倍数である必要があります。
556 
557  /*!
558  @brief デフォルトコンストラクタです。
559  */
561  {
562  Reset();
563  }
564 
565  /*!
566  @brief デフォルトの値を設定します。
567  */
568  void Reset()
569  {
571  isAutoInitializeSocket = false;
572  memoryPool = NULL;
573  memoryPoolSize = 0;
574  allocatorPoolSize = 0;
575  }
576 
577  /*!
578  @brief 構造体の中身をトレースします。
579  */
580  void Trace()
581  {
582  PIA_TRACE_EX(common::TraceFlagFramework, "[InitializeSocketSetting] isAutoInitializeNetworkInterface:%d, isAutoInitializeSocket:%d, memoryPoolSize:%u, allocatorPoolSize:%u", isAutoInitializeNetworkInterface, isAutoInitializeSocket, memoryPoolSize, allocatorPoolSize);
583  }
584 };
585 
586 /*!
587 @brief session のスタートアップに必要なデータを持つ構造体です。
588 @details 各設定項目については session::Session::Startup も併せて参照してください。
589 */
591 {
592  uint16_t maxNumOfRelayRoutesAssignedToStation; //!< リレー接続有効時に、ステーション1台に割り当てられる転送依頼数の最大制限値です。
593  uint16_t maxRttOfRelayRoute; //!< リレー接続有効時に、1つのリレー接続経路の合計 RTT の最大制限値(msec)です。
594  uint32_t maxSilenceTime; //!< 許容される最大無通信時間 [msec] を指定します。デフォルトは session::SessionMaxSilenceTimeDefault です。設定可能な最大値は session::SessionMaxSilenceTimeMax, 最小値は session::SessionMaxSilenceTimeMin です。
595  uint32_t keepAliveSendingInterval; //!< キープアライブの送信間隔 [msec] を指定します。デフォルトは session::SessionKeepAliveIntervalDefault です。
596  transport::Station::PlayerInfo playerInfo; //!< Station に結び付けて保存されるプレイヤー情報です。
598  uint32_t signatureKeyDataSize; //!< 署名鍵のサイズです。署名を無効にする場合は 0 を指定する必要があります。@ref common::SignatureSetting::SignatureKeyDataSizeMax 以下である必要があります。
599 #if NN_PIA_NINTENDOSDK
600  bool isAutoInitializeLdn; //!< LDN の初期化を自動で行うかどうか指定します。
601 #endif
602  bool isInetHostMigrationEnabled; //!< インターネット通信時にホストマイグレーション機能を有効にするかどうかを指定します。デフォルトは true (有効) になっています。
603 
604  /*!
605  @brief デフォルトコンストラクタです。
606  */
608  {
609  Reset();
610  }
611 
612  /*!
613  @brief デフォルトの値を設定します。
614  */
615  void Reset()
616  {
618  maxRttOfRelayRoute = 400;
619  maxSilenceTime = 10000;
621  {
624  playerInfo.playerId.id[0] = 0;
625  playerInfo.playerId.id[1] = 0;
626  }
627  signatureKeyData.Copy("framework key");
628  signatureKeyDataSize = sizeof("framework key");
629 #if NN_PIA_NINTENDOSDK
630  isAutoInitializeLdn = false;
631 #endif
633  }
634 
635  /*!
636  @brief コピーします。
637  */
638  void Copy(const StartupSessionSetting& setting)
639  {
642  maxSilenceTime = setting.maxSilenceTime;
649 #if NN_PIA_NINTENDOSDK
650  isAutoInitializeLdn = setting.isAutoInitializeLdn;
651 #endif
653  }
654 
655  /*!
656  @brief 構造体の中身をトレースします。
657  */
658  void Trace()
659  {
660 #if NN_PIA_NINTENDOSDK
661  PIA_TRACE_EX(common::TraceFlagFramework, "[SessionStartupSetting] maxNumOfRelayRoutesAssignedToStation:%u, maxRttOfRelayRoute:%u, playerInfo.nameStringLanguage:%u, playerInfo.playerId.id[0]:%llu, playerInfo.playerId.id[1]:%llu, playerInfo.screenName:%s, signatureKeyData:%s, signatureKeyDataSize:%u, isAutoInitializeLdn:%d, isInetHostMigrationEnabled:%d", maxNumOfRelayRoutesAssignedToStation, maxRttOfRelayRoute, playerInfo.nameStringLanguage, playerInfo.playerId.id[0], playerInfo.playerId.id[1], playerInfo.screenName.GetCharArray(), signatureKeyData.GetCharArray(), signatureKeyDataSize, isAutoInitializeLdn, isInetHostMigrationEnabled);
662 #else
663  PIA_TRACE_EX(common::TraceFlagFramework, "[SessionStartupSetting] maxNumOfRelayRoutesAssignedToStation:%u, maxRttOfRelayRoute:%u, playerInfo.nameStringLanguage:%u, playerInfo.playerId.id[0]:%llu, playerInfo.playerId.id[1]:%llu, playerInfo.screenName:%s, signatureKeyData:%s, signatureKeyDataSize:%u, isInetHostMigrationEnabled:%d", maxNumOfRelayRoutesAssignedToStation, maxRttOfRelayRoute, playerInfo.nameStringLanguage, playerInfo.playerId.id[0], playerInfo.playerId.id[1], playerInfo.screenName.GetCharArray(), signatureKeyData.GetCharArray(), signatureKeyDataSize, isInetHostMigrationEnabled);
664 #endif
665  }
666 
667 private:
668  StartupSessionSetting& operator=(const StartupSessionSetting& rhs) const;
669 };
670 
671 /*!
672 @brief セッションを構築する際に必要なデータを持つ構造体です。
673 */
675 {
676 protected:
678  {
679  Reset();
680  }
681 
682 public:
683  /*!
684  @brief デストラクタです。
685  */
687  {
688  }
689 
690  /*!
691  @brief デフォルトの値を設定します。
692  */
693  virtual void Reset()
694  {
695  }
696 };
697 
698 /*!
699 @brief NEX を使用してセッションを構築する際に必要なデータを持つ構造体です。
700 */
702 {
703 #if NN_PIA_FRAMEWORK_ENABLE_NEX
704  inet::NexJoinRandomSessionSetting nexJoinRandomSessionSetting; //!< ランダムマッチメイク処理に関する設定です。
705 #endif
706  /*!
707  @brief デフォルトコンストラクタです。
708  */
711  {
712  Reset();
713  }
714 
715  /*!
716  @brief デフォルトの値を設定します。
717  */
718  virtual void Reset()
719  {
720 #if NN_PIA_FRAMEWORK_ENABLE_NEX
723 #endif
724  }
725 
726  /*!
727  @brief コピーします。
728  */
729  void Copy(const NexJoinRandomSessionSetting& setting)
730  {
731 #if NN_PIA_FRAMEWORK_ENABLE_NEX
733 #else
734  NN_PIA_UNUSED(setting);
735 #endif
736  }
737 
738 private:
739  NexJoinRandomSessionSetting& operator=(const NexJoinRandomSessionSetting& rhs) const;
740 };
741 
742 /*!
743 @brief lan を使用してセッションを構築する際に必要なデータを持つ構造体です。
744 */
746 {
747  lan::LanJoinRandomSessionSetting lanJoinRandomSessionSetting; //!< ランダムマッチメイク処理に関する設定です。
748 
749  /*!
750  @brief デフォルトコンストラクタです。
751  */
754  {
755  Reset();
756  }
757 
758  /*!
759  @brief デフォルトの値を設定します。
760  */
761  virtual void Reset()
762  {
765  }
766 
767  /*!
768  @brief コピーします。
769  */
770  void Copy(const LanJoinRandomSessionSetting& setting)
771  {
773  }
774 
775 private:
776  LanJoinRandomSessionSetting& operator=(const LanJoinRandomSessionSetting& rhs) const;
777 };
778 
779 #if NN_PIA_FRAMEWORK_ENABLE_PLAY
780 /*!
781 @brief gpg を使用してセッションを構築する際に必要なデータを持つ構造体です。
782 */
783 struct PlayJoinRandomSessionSetting : public JoinRandomSessionSetting
784 {
785  play::PlayJoinRandomSessionSetting playJoinRandomSessionSetting; //!< ランダムマッチメイク処理に関する設定です。
786 
787  /*!
788  @brief デフォルトコンストラクタです。
789  */
790  PlayJoinRandomSessionSetting()
791  : JoinRandomSessionSetting()
792  {
793  Reset();
794  }
795 
796  /*!
797  @brief デフォルトの値を設定します。
798  */
799  virtual void Reset()
800  {
802  playJoinRandomSessionSetting.Reset();
803  }
804 
805  /*!
806  @brief コピーします。
807  */
808  void Copy(const PlayJoinRandomSessionSetting& setting)
809  {
810  playJoinRandomSessionSetting.Copy(setting.playJoinRandomSessionSetting);
811  }
812 
813 private:
814  PlayJoinRandomSessionSetting& operator=(const PlayJoinRandomSessionSetting& rhs) const;
815 };
816 #endif
817 
818 /*!
819 @brief レイテンシエミュレーション、およびパケロスエミュレーションに必要なデータを持つ構造体です。
820 */
822 {
823  int32_t sendThreadPacketLossRatio; //!< 送信スレッドがエミュレートするパケロスの確率を設定します。
824  int32_t receiveThreadPacketLossRatio; //!< 受信スレッドがエミュレートするパケロスの確率を設定します。
825  int32_t sendThreadLatencyEmulationMin; //!< 送信レイテンシエミュレーション時間の最小値を設定します(単位はミリ秒)。
826  int32_t sendThreadLatencyEmulationMax; //!< 送信レイテンシエミュレーション時間の最大値を設定します(単位はミリ秒)。
827  int32_t receiveThreadLatencyEmulationMin; //!< 受信レイテンシエミュレーション時間の最小値を設定します(単位はミリ秒)。
828  int32_t receiveThreadLatencyEmulationMax; //!< 受信レイテンシエミュレーション時間の最大値を設定します(単位はミリ秒)。
829 
830  /*!
831  @brief デフォルトコンストラクタです。
832  */
834  {
835  Reset();
836  }
837 
838  /*!
839  @brief デフォルトの値を設定します。
840  */
841  void Reset()
842  {
849  }
850 
851  /*!
852  @brief コピーします。
853  */
854  void Copy(const SetEmulationParamArg& arg)
855  {
862  }
863 
864  /*!
865  @brief 構造体の中身をトレースします。
866  */
867  void Trace()
868  {
869  PIA_TRACE_EX(common::TraceFlagFramework, "[SetEmulationParamArg] sendThreadPacketLossRatio:%d, receiveThreadPacketLossRatio:%d, sendThreadLatencyEmulationMin:%d, sendThreadLatencyEmulationMax:%d, receiveThreadLatencyEmulationMin:%d, receiveThreadLatencyEmulationMax%d", sendThreadPacketLossRatio, receiveThreadPacketLossRatio, sendThreadLatencyEmulationMin, sendThreadLatencyEmulationMax, receiveThreadLatencyEmulationMin, receiveThreadLatencyEmulationMax);
870  }
871 };
872 
873 /*!
874 @cond PRIVATE
875 @brief CPU 負荷測定の設定を行う構造体です。
876 */
877 struct InitializeTuneSetting
878 {
879  bool isAutoInitialize; //!< CpuProfiling を行うかどうか指定します。
880 
881  InitializeTuneSetting()
882  {
883  Reset();
884  }
885 
886  void Reset()
887  {
888  isAutoInitialize = false;
889  }
890 };
891 //! @endcond
892 
893 /*!
894 @brief 処理の結果を示す Result にネットワークのエラーコードを持たせた構造体です。
895 */
897 {
898  Result result; //!< 処理の結果を格納します。
899  uint32_t networkErrorCode; //!< ネットワークエラーコードです。
900 
901  /*!
902  @brief デフォルトコンストラクタです。
903  */
906  {
907  }
908 
909  /*!
910  @brief デフォルトコンストラクタです。
911  */
912  ResultInfo(Result res, uint32_t code)
913  {
914  result = res;
915  networkErrorCode = code;
916  }
917 };
918 
919 }
920 }
921 } // end of namespace common