CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
inet_NexCreateSessionSetting.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
19 
20 #include <nn/pia/inet/inet_NexSessionTypes.h>
21 
22 #include <nn/pia/common/common_FixedString.h>
23 #include <nn/pia/common/common_InetAddress.h>
24 #include <nn/pia/session/session_CreateSessionSetting.h>
25 
26 namespace nn
27 {
28 namespace pia
29 {
30 namespace inet
31 {
32 /*!
33  @brief セッション構築処理に関する設定を管理するクラスです。
34 
35  @see nn::pia::session::CreateSessionSetting
36  */
38 {
39 public:
40  /*!
41  @brief デフォルトコンストラクタ。
42  */
44 
45  /*!
46  @brief デストラクタ。
47  */
48  virtual ~NexCreateSessionSetting();
49 
50  /*!
51  @cond PRIVATE
52  @brief 指定した項目の示すビットマスクの各ビットに対応する項目
53  */
54  enum NexCreateSessionSettingMask
55  {
56  NexCreateSessionSettingMask_GameMode = 0, //!< ゲームモード
57  NexCreateSessionSettingMask_SessionType, //!< セッションタイプ
58  NexCreateSessionSettingMask_Attribute, //!< 属性
59  NexCreateSessionSettingMask_ApplicationData = NexCreateSessionSettingMask_Attribute + AttributeSizeMax, //!< アプリケーション定義データ
60  NexCreateSessionSettingMask_OpenSession, //!< 参加可能かどうか
61  NexCreateSessionSettingMask_SessionUserPassword, //!< ユーザーパスワード
62  NexCreateSessionSettingMask_MatchmakeSessionOption, //!< マッチメイクセッションオプション
63  NexCreateSessionSettingMask_SelectionPriority, //!< マッチメイクの優先度
64  NexCreateSessionSettingMask_ExtraParticipant, //!< (予約)
65  NexCreateSessionSettingMask_ScoreBasedSettingIndex, //!< スコア換算方法の設定インデックス(スコアベースマッチメイク使用時)
66  NexCreateSessionSettingMask_ScoreBasedRatingValue, //!< レーティング値(スコアベースマッチメイク使用時)
67  NexCreateSessionSettingMask_ScoreBasedDisconnectionRate, //!< 切断率(スコアベースマッチメイク使用時)
68  NexCreateSessionSettingMask_ScoreBasedViolationRate, //!< 違反率(スコアベースマッチメイク使用時)
69  NexCreateSessionSettingMask_ScoreBasedCountryCode, //!< 国コード(スコアベースマッチメイク使用時)
70  NexCreateSessionSettingMask_ScoreBasedGeoIp, //!< 位置情報(スコアベースマッチメイク使用時)
71  NexCreateSessionSettingMask_ScoreBasedOverrideIp, //!< デバッグ用IPアドレス(スコアベースマッチメイク使用時)
72  NexCreateSessionSettingMask_Community, //!< 関連コミュニティ
73  NexCreateSessionSettingMask_MatchmakeKeyword, //!< あいことば
74  NexCreateSessionSettingMask_AdditionalParamString, //!< 追加文字列パラメータ(スコアベースマッチメイク使用時)
75  NexCreateSessionSettingMask_AdditionalParamValue = NexCreateSessionSettingMask_AdditionalParamString + AdditionalParamStringSizeMax, //!< 追加パラメータ(スコアベースマッチメイク使用時)
76  NexCreateSessionSettingMask_Max = NexCreateSessionSettingMask_AdditionalParamValue + AdditionalParamKeySizeMax
77  };
78  //! @endcond
79 
80  /*!
81  @brief 構築するセッションのゲームモードを指定します。
82  @param[in] gameMode 構築するセッションに指定するゲームモード。
83  */
84  void SetGameMode(uint32_t gameMode);
85 
86  /*!
87  @cond PRIVATE
88  */
89  uint32_t GetGameMode() const;
90  bool IsSetGameMode() const;
91  //! @endcond
92 
93  /*!
94  @brief 構築するセッションのセッションタイプとホストマイグレーション時にセッションを自動的に参加締切状態にする設定を指定します。
95  @details デフォルトではセッションタイプは SessionType_Anybody、ホストマイグレーション時にセッションを自動的に参加締切状態に変更しない設定になります。
96  @param[in] sessionType 構築するセッションに指定するセッションタイプ。
97  @param[in] isAutoCloseSession ホストマイグレーション時にセッションを自動的に参加締切状態にする設定。
98  */
99  void SetSessionType(SessionType sessionType, bool isAutoCloseSession = false);
100 
101  /*!
102  @cond PRIVATE
103  */
104  SessionType GetSessionType() const;
105  bool IsAutoCloseSession() const;
106  bool IsSetSessionType() const;
107  //! @endcond
108 
109  /*!
110  @brief 構築するセッションに属性を指定します。
111  @details 設定されなかったインデックスの属性には 0 が設定されます。
112  @param[in] index 構築するセッションに指定する属性のインデックス。AttributeSizeMax 以下である必要があります。
113  @param[in] value 構築するセッションに指定する属性の値。
114  @return セッションの属性の指定に成功すれば、成功の Result が返されます。
115  @retval nn::pia::ResultInvalidArgument 属性のインデックスが範囲外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
116  */
117  Result SetAttribute(uint32_t index, uint32_t value);
118 
119  /*!
120  @cond PRIVATE
121  */
122  uint32_t GetAttribute(uint32_t index) const;
123  bool IsSetAttribute(uint32_t index) const;
124  //! @endcond
125 
126  /*!
127  @brief アプリケーション定義のデータを指定します。
128  @param[in] pData 構築するセッションに指定するアプリケーション定義データのバッファ。
129  @param[in] size 構築するセッションに指定するアプリケーション定義データのサイズ。ApplicationDataBufferSizeMax 以下である必要があります。
130  @return アプリケーション定義データの設定に成功すれば、成功の Result が返されます。
131 
132  @retval nn::pia::ResultInvalidArgument バッファが NULL ポインタ、または指定したデータサイズが大きすぎます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
133  */
134  virtual Result SetApplicationData(const void* pData, uint32_t size);
135 
136  /*!
137  @cond PRIVATE
138  */
139  virtual Result GetApplicationData(void* pDataBuf, uint32_t dataBufSize) const;
140  virtual uint32_t GetApplicationDataSize() const;
141  virtual bool IsSetApplicationData() const;
142  //! @endcond
143 
144  /*!
145  @brief 構築したセッションが参加可能で構築されるか、参加不可で構築されるかを指定します。指定しなかった場合、参加不可で構築されます。
146  @param[in] isOpen true を設定した場合、セッションは始めから参加可能な状態で構築されます。
147  */
148  void SetOpenSession(bool isOpen);
149 
150  /*!
151  @cond PRIVATE
152  */
153  bool IsOpenSession() const;
154  bool IsSetOpenSession() const;
155  //! @endcond
156 
157  /*!
158  @brief 作成したセッションにユーザーパスワードを設定します。
159  @param[in] userPassword 設定するユーザーパスワード。パスワードの文字列は SessionUserPasswordLengthMax 以下である必要があります。
160  @return ユーザーパスワードの指定に成功すれば、成功の Result が返されます。
161 
162  @retval nn::pia::ResultInvalidArgument 文字列が NULL、文字コードが不正、またはユーザーパスワードの最大長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
163  */
164  Result SetSessionUserPassword(const common::String& userPassword);
165 
166  /*!
167  @cond PRIVATE
168  */
169  const common::String& GetSessionUserPassword() const;
170  bool IsSetSessionUserPassword() const;
171  //! @endcond
172 
173  /*!
174  @brief 作成したセッションにあいことばマッチメイク用のあいことばを設定します。
175  @param[in] keyword 設定するあいことばマッチメイク用のあいことば。あいことばの文字列は SessionMatchmakeKeywordLength 以下である必要があります。
176  @return あいことばの指定に成功すれば、成功の Result が返されます。
177 
178  @retval nn::pia::ResultInvalidArgument 文字列が NULL、文字コードが不正、またはあいことばの最大長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
179  */
181 
182  /*!
183  @cond PRIVATE
184  */
185  const common::String& GetSessionMatchmakeKeyword() const;
186  bool IsSetSessionMatchmakeKeyword() const;
187  //! @endcond
188 
189  /*!
190  @cond PRIVATE
191  @brief 構築するセッションのマッチメイクセッションオプションを指定します。
192  @param[in] option 構築するセッションに指定するマッチメイクセッションオプション。
193  */
194  void SetMatchmakeSessionOption(uint32_t option);
195  //! @endcond
196 
197  /*!
198  @cond PRIVATE
199  */
200  uint32_t GetMatchmakeSessionOption() const;
201  bool IsSetMatchmakeSessionOption() const;
202  //! @endcond
203 
204  /*!
205  @brief 同じ条件のセッションが見つかった際のマッチメイクの優先度を設定します。
206  @details 作成したセッションのマッチメイクの優先度を設定します。
207  設定しなかった場合、0 が設定されます。
208  nn::pia::inet::SelectionMethod_BroadenRangeWithSelectionPriority,
209  SelectionMethod_ScoreBased で検索を行った場合のみ有効です。
210  nn::pia::inet::SessionSelectionPriorityMax を超えた値を引数にした場合、nn::pia::inet::SessionSelectionPriorityMax が設定されます。
211 
212  @param[in] priority 設定するマッチメイクの優先度
213  */
214  void SetSelectionPriority(uint8_t priority);
215 
216  /*!
217  @cond PRIVATE
218  */
219  uint8_t GetSelectionPriority() const;
220  bool IsSetSelectionPriority() const;
221  //! @endcond
222 
223  /*!
224  @brief スコアベースマッチメイク指定時に、比較に使用するレーティング値を設定します。
225  @param[in] ratingValue レーティング値
226  */
227  void SetRatingValue(uint32_t ratingValue);
228 
229  /*!
230  @cond PRIVATE
231  */
232  uint32_t GetRatingValue() const;
233  bool IsSetRatingValue() const;
234  //! @endcond
235 
236  /*!
237  @brief スコアベースマッチメイク指定時に、比較に使用する切断率を設定します。
238  @param[in] disconnectionRate 切断率
239  */
240  void SetDisconnectionRate(uint32_t disconnectionRate);
241 
242  /*!
243  @cond PRIVATE
244  */
245  uint32_t GetDisconnectionRate() const;
246  bool IsSetDisconnectionRate() const;
247  //! @endcond
248 
249  /*!
250  @brief スコアベースマッチメイク指定時に、比較に使用する違反率を設定します。
251  @param[in] violationRate 違反率
252  */
253  void SetViolationRate(uint32_t violationRate);
254 
255  /*!
256  @cond PRIVATE
257  */
258  uint32_t GetViolationRate() const;
259  bool IsSetViolationRate() const;
260  //! @endcond
261 
262  /*!
263  @brief スコアベースマッチメイク指定時に、比較に位置情報 (緯度経度、国コード) を使用するかどうかを設定します。
264  @details 位置情報を使うかどうかをセットしない場合は距離の比較に関するスコアがデフォルトスコアとして評価されます。
265  @param[in] use 位置情報を使用するかどうか
266  */
267  void SetUseGeoIp(bool use);
268 
269  /*!
270  @cond PRIVATE
271  */
272  bool GetUseGeoIp() const;
273  bool IsSetUseGeoIp() const;
274  //! @endcond
275 
276  /*!
277  @if NIN_DOC
278  @brief スコアベースマッチメイク指定時に、比較に使用する国コードを設定します。国コードは ISO 3166-1 alpha-2 によるアルファベット 2 文字(大文字)の国コードを設定します。
279  @details @ref SetUseGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合に使用する国コードをセットします。
280  位置情報が得られた場合はここで指定した国コードは使用されません。
281  国コードをセットしない場合は @ref SetUseGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合、
282  国コードの比較に関するスコアがデフォルトスコアとして評価されます。
283  @param[in] countryCode 国コード。ISO 3166-1 alpha-2 によるアルファベット 2 文字(大文字)の文字列である必要があります。
284  @return 国コードの指定に成功すれば、成功の Result が返されます。
285 
286  @retval nn::pia::ResultInvalidArgument 国コードの文字列長が 2 以外、または国コードに指定した文字種が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
287  @endif
288  */
289  Result SetCountryCode(const common::String& countryCode);
290 
291  /*!
292  @if CTR_DOC
293  @brief スコアベースマッチメイク指定時に、比較に使用する国コードを設定します。国コードはプラットフォームで定義された値を設定します。
294  @details @ref SetUseGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合に使用する国コードをセットします。
295  位置情報が得られた場合はここで指定した国コードは使用されません。
296  国コードをセットしない場合は @ref SetUseGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合、
297  国コードの比較に関するスコアがデフォルトスコアとして評価されます。
298  @param[in] countryCode 国コード
299  @endif
300  @if CAFE_DOC
301  @brief スコアベースマッチメイク指定時に、比較に使用する国コードを設定します。国コードはプラットフォームで定義された値を設定します。
302  @details @ref SetUseGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合に使用する国コードをセットします。
303  位置情報が得られた場合はここで指定した国コードは使用されません。
304  国コードをセットしない場合は @ref SetUseGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合、
305  国コードの比較に関するスコアがデフォルトスコアとして評価されます。
306  @param[in] countryCode 国コード
307  @endif
308  */
309  void SetCountryCode(uint32_t countryCode);
310 
311  /*!
312  @cond PRIVATE
313  */
314 #if NN_PIA_ENABLE_ISO_COUNTRY_CODE
315  const common::String* GetCountryCode() const;
316 #else
317  uint32_t GetCountryCode() const;
318 #endif
319  //! @endcond
320 
321  /*!
322  @cond PRIVATE
323  */
324  bool IsSetCountryCode() const;
325  //! @endcond
326 
327  /*!
328  @brief スコアベースマッチメイク指定時に、比較に使用するデバッグ用の IP アドレスを設定します。
329  @details 自身の IP アドレスの代わりにこの IP アドレスを使用して GeoIP による位置情報を取得します。 デバッグ用にのみ使用可能です。
330  @param[in] inetAddress 代わりに使用する IP アドレス
331  @return IP アドレスの指定に成功すれば、成功の Result が返されます。
332 
333  @retval nn::pia::ResultInvalidArgument 指定した IP アドレスが不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
334  */
335  Result SetOverrideIpAddress(const common::InetAddress& inetAddress);
336 
337  /*!
338  @cond PRIVATE
339  */
340  const common::InetAddress& GetOverrideIpAddress() const;
341  bool IsSetOverrideIpAddress() const;
342  //! @endcond
343 
344  /*!
345  @cond PRIVATE
346  @brief スコアベースマッチメイク用パラメータが設定されているかどうか
347  */
348  bool IsSetScoreBasedParameter() const;
349  //! @endcond
350 
351  /*!
352  @cond PRIVATE
353  @brief スコアベースマッチメイク指定時に、比較に使用するパラメータを設定します。
354  @param[in] index パラメータのインデックス。AdditionalParamKeySizeMax 以下である必要があります。
355  @param[in] keyString パラメータの名前。AdditionalParamKeyLength 以下である必要があります。
356  @param[in] value パラメータの値
357  @return パラメータの指定に成功すれば、成功の Result が返されます。
358 
359  @retval nn::pia::ResultInvalidArgument パラメータのインデックスが範囲外、またはパラメータの名前の文字列が NULL、文字コードが不正、最大文字列長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
360  */
361  Result SetAdditionalScoreBasedParameterValue(uint32_t index, const common::String& keyString, const ParamVariant& value);
362  //! @endcond
363 
364  /*!
365  @cond PRIVATE
366  @brief スコアベースマッチメイク指定時に、比較に使用するパラメータを設定します。
367  @param[in] index パラメータのインデックス。AdditionalParamStringSizeMax 以下である必要があります。
368  @param[in] keyString パラメータの名前。AdditionalParamKeyLength 以下である必要があります。
369  @param[in] value パラメータの文字列。AdditionalParamStringLength 以下である必要があります。
370  @return パラメータの指定に成功すれば、成功の Result が返されます。
371 
372  @retval nn::pia::ResultInvalidArgument パラメータのインデックスが範囲外、またはパラメータの名前やパラメータの文字列が NULL、文字コードが不正、最大文字列長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
373  */
374  Result SetAdditionalScoreBasedParameterString(uint32_t index, const common::String& keyString, const common::String& value);
375  //! @endcond
376 
377  /*!
378  @cond PRIVATE
379  */
380  const common::String* GetAdditionalScoreBasedParameterValueKey(uint32_t index) const;
381  const ParamVariant& GetAdditionalScoreBasedParameterValue(uint32_t index) const;
382  bool IsSetAdditionalScoreBasedParameterValue(uint32_t index) const;
383  const common::String* GetAdditionalScoreBasedParameterStringKey(uint32_t index) const;
384  const common::String* GetAdditionalScoreBasedParameterString(uint32_t index) const;
385  bool IsSetAdditionalScoreBasedParameterString(uint32_t index) const;
386  //! @endcond
387 
388  /*!
389  @cond PRIVATE
390  @brief アプリケーション定義のデータをコピーします。
391  */
392  void CopyApplicationDataToVector(void* pVectorTmp) const;
393  //! @endcond
394 
395  /*!
396  @cond PRIVATE
397  @brief デバッグに有用な情報をプリント。
398  */
399  virtual void Trace(uint64_t flag) const;
400  //! @endcond
401 
402  /*!
403  @cond PRIVATE
404  */
405  void SetExtraParticipantNum(uint16_t num);
406  uint16_t GetExtraParticipantNum() const;
407  bool IsSetExtraParticipantNum() const;
408  //! @endcond
409 
410  /*!
411  @brief 関連付けるコミュニティの ID を設定します。
412  @details inet::NexSessionSearchCriteria::SetCommunityId で同じコミュニティ ID を指定して検索したプレイヤーのみに検索結果として見つけられるセッションになります。
413  また、NEX のランキング機能との連携を行う際に必要となります。ランキング機能との連携については、NEX の永続ギャザリングに関するドキュメントを参照してください。
414  */
415  void SetCommunityId(uint32_t gid);
416 
417  /*!
418  @cond PRIVATE
419  @brief 関連付けるコミュニティの ID を取得します。
420  */
421  uint32_t GetCommunityId() const;
422  bool IsSetCommunityId() const;
423  //! @endcond
424 
425  /*!
426  @brief 設定をコピーします。
427  @param[in] rhs コピー元のオブジェクトです。
428  */
429  void Copy(const NexCreateSessionSetting& rhs);
430 
431  /*!
432  @brief コピーコンストラクタ。
433  @param[in] rhs コピー元のオブジェクトです。
434  */
436 
437  /*!
438  @brief 代入演算子です。
439  @param[in] rhs 代入するオブジェクトです。
440  @return 本オブジェクトへの参照。
441  */
443 
444  /*!
445  @brief 設定をリセットします。
446  */
447  virtual void Reset();
448 
449 protected:
450  uint32_t m_GameMode;
451  SessionType m_SessionType;
452  bool m_IsAutoCloseSession;
453  uint32_t m_Attribute[AttributeSizeMax];
454  uint8_t m_ApplicationDataBuffer[ApplicationDataBufferSizeMax];
455  uint32_t m_ApplicationDataSize;
456  bool m_OpenParticipation;
457  uint8_t m_ProgressScore;
458  uint32_t m_RatingValue;
459  uint32_t m_ViolationRate;
460  uint32_t m_DisconnectionRate;
461  bool m_UseGeoIp;
462 #if NN_PIA_ENABLE_ISO_COUNTRY_CODE
464 #else
465  uint32_t m_CountryCode;
466 #endif
467  common::InetAddress m_OverrideIpAddress;
468  uint16_t m_ExtraParticipantNum;
469  uint32_t m_CommunityId;
471  uint32_t m_MatchmakeSessionOption;
472 
473  common::FixedString<AdditionalParamKeyLength> m_AdditionalParamValueKey[AdditionalParamKeySizeMax];
474  struct ParamVariant m_AdditionalParamValue[AdditionalParamKeySizeMax];
475 
476  common::FixedString<AdditionalParamKeyLength> m_AdditionalParamStringKey[AdditionalParamStringSizeMax];
477  common::FixedString<AdditionalParamStringLength> m_AdditionalParamString[AdditionalParamStringSizeMax];
478 
480 
481  uint32_t m_SetCondMask;
482 
483 private:
484 };
485 }
486 }
487 } // end of namespace nn::pia::inet
488 
489 #endif