CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
inet_NexUpdateSessionSetting.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_DateTime.h>
24 #include <nn/pia/session/session_UpdateSessionSetting.h>
25 
26 namespace nn
27 {
28 namespace pia
29 {
30 namespace inet
31 {
32 /*!
33  @brief セッション設定の更新処理に関する情報を管理するクラスです。
34  @details 更新する値を指定した設定のみ更新されます。更新しない設定について、指定は不要です。
35 
36  @see session::UpdateSessionSetting
37  */
39 {
40 public:
41  /*!
42  @brief デフォルトコンストラクタ。
43  */
45 
46  /*!
47  @brief デストラクタ。
48  */
49  virtual ~NexUpdateSessionSetting();
50 
51  /*!
52  @brief セッションの最小参加人数を指定します。
53  @param[in] min 作成するセッションに指定する最小参加人数。
54  */
55  void SetMinParticipantNum(uint16_t min);
56 
57  /*!
58  @brief セッションの最大参加人数を指定します。
59  @param[in] max 作成するセッションに指定する最大参加人数。
60  */
61  void SetMaxParticipantNum(uint16_t max);
62 
63  /*!
64  @brief セッションのセッションタイプとホストマイグレーション時にセッションを自動的に参加締切状態にする設定を指定します。
65  @if CTR_DOC
66  @details セッションタイプの変更は inet::SessionType_Friend から inet::SessionType_Anybody への更新のみ可能です。
67  セッションタイプを変更せず、自動的に参加締切状態に設定のみを更新することも可能です。デフォルトでは自動的に参加締切状態に変更しない設定になります。
68  @endif
69  @if CAFE_DOC
70  @details セッションタイプの変更は inet::SessionType_Friend から inet::SessionType_Anybody への更新のみ可能です。
71  セッションタイプを変更せず、自動的に参加締切状態に設定のみを更新することも可能です。デフォルトでは自動的に参加締切状態に変更しない設定になります。
72  @endif
73  @if NIN_DOC
74  @details 自動的に参加締切状態に設定のみを更新可能です。デフォルトでは自動的に参加締切状態に変更しない設定になります。
75  @endif
76  @param[in] sessionType セッションタイプ。
77  @param[in] isAutoCloseSession ホストマイグレーション時にセッションを自動的に参加締切状態にする設定。
78  */
79  void SetSessionType(SessionType sessionType, bool isAutoCloseSession = false);
80 
81  /*!
82  @brief セッションの属性を一括して指定します。
83  @param[in] attributes 属性の配列。配列のサイズは @ref AttributeSizeMax である必要があります。
84  */
85  void SetAttributes(const uint32_t attributes[nn::pia::inet::AttributeSizeMax]);
86 
87  /*!
88  @brief セッションの属性をインデックスを指定して設定します。
89  @details 本関数でセッションの属性を設定する場合は、他の項目を併せて設定できません。
90  @param[in] index 指定するセッションの属性のインデックス。AttributeSizeMax 以下である必要があります。
91  @param[in] value 指定するセッションの属性の値。
92  @return セッションの属性の指定に成功すれば、成功の Result が返されます。
93  @retval nn::pia::ResultInvalidArgument 属性のインデックスが範囲外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
94  @retval nn::pia::ResultInvalidState 他の項目が設定されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
95  */
96  Result SetAttribute(uint32_t index, uint32_t value);
97 
98  /*!
99  @brief セッションのユーザーパスワードを指定します。
100  @param[in] userPassword 設定するユーザーパスワード。パスワードの文字列は SessionUserPasswordLengthMax 以下である必要があります。
101  @return ユーザーパスワードの指定に成功すれば、成功の Result が返されます。
102  @retval nn::pia::ResultInvalidArgument 文字列が NULL、文字コードが不正、またはユーザーパスワードの最大長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
103  */
104  Result SetSessionUserPassword(const common::String& userPassword);
105 
106  /*!
107  @brief あいことばマッチメイク用のあいことばを指定します。
108  @param[in] keyword 設定するあいことばマッチメイク用のあいことば。あいことばの文字列は SessionMatchmakeKeywordLength 以下である必要があります。
109  @return あいことばの指定に成功すれば、成功の Result が返されます。
110 
111  @retval nn::pia::ResultInvalidArgument 文字列が NULL、文字コードが不正、またはあいことばの最大長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
112  */
114 
115  /*!
116  @brief スコアベースマッチメイク指定時に、比較に使用するレーティング値を更新します。
117  @param[in] ratingValue レーティング値
118  */
119  void SetRatingValue(uint32_t ratingValue);
120 
121  /*!
122  @brief スコアベースマッチメイク指定時に、比較に使用する切断率を更新します。
123  @param[in] disconnectionRate 切断率
124  */
125  void SetDisconnectionRate(uint32_t disconnectionRate);
126 
127  /*!
128  @brief スコアベースマッチメイク指定時に、比較に使用する違反率を更新します。
129  @param[in] violationRate 違反率
130  */
131  void SetViolationRate(uint32_t violationRate);
132 
133  /*!
134  @if NIN_DOC
135  @brief スコアベースマッチメイク指定時に、比較に使用する国コードを設定します。国コードはISO 3166-1 alpha-2 によるアルファベット 2 文字(大文字)の国コードを設定します。
136  @details @ref SetUpdateGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合に使用する国コードをセットします。
137  位置情報が得られた場合はここで指定した国コードは使用されません。
138  国コードをセットしない場合は @ref SetUpdateGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合、
139  国コードの比較に関するスコアがデフォルトスコアとして評価されます。
140  @param[in] countryCode 国コード。ISO 3166-1 alpha-2 によるアルファベット 2 文字(大文字)の文字列である必要があります。
141  @return 国コードの指定に成功すれば、成功の Result が返されます。
142 
143  @retval nn::pia::ResultInvalidArgument 国コードの文字列長が 2 以外、または国コードに指定した文字種が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
144  @endif
145  */
146  Result SetCountryCode(const common::String& countryCode);
147 
148  /*!
149  @if CTR_DOC
150  @brief スコアベースマッチメイク指定時に、比較に使用する国コードを設定します。国コードはプラットフォームで定義された値を設定します。
151  @details @ref SetUpdateGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合に使用する国コードをセットします。
152  位置情報が得られた場合はここで指定した国コードは使用されません。
153  国コードをセットしない場合は @ref SetUpdateGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合、
154  国コードの比較に関するスコアがデフォルトスコアとして評価されます。
155  @param[in] countryCode 国コード
156  @endif
157  @if CAFE_DOC
158  @brief スコアベースマッチメイク指定時に、比較に使用する国コードを設定します。国コードはプラットフォームで定義された値を設定します。
159  @details @ref SetUpdateGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合に使用する国コードをセットします。
160  位置情報が得られた場合はここで指定した国コードは使用されません。
161  国コードをセットしない場合は @ref SetUpdateGeoIp で位置情報を使用しない設定をした場合、もしくは位置情報を使用する設定をしたが位置情報を得られなかった場合、
162  国コードの比較に関するスコアがデフォルトスコアとして評価されます。
163  @param[in] countryCode 国コード
164  @endif
165  */
166  void SetCountryCode(uint32_t countryCode);
167 
168  /*!
169  @brief スコアベースマッチメイク指定時に、比較に使用する位置情報 (緯度経度、国コード) を更新するか設定します。
170  @param[in] use 位置情報を更新するかどうか
171  */
172  void SetUpdateGeoIp(bool use);
173 
174  /*!
175  @brief 同じ条件のセッションが見つかった際のマッチメイクの優先度を指定します。
176  @details 作成したセッションのマッチメイクの優先度を指定します。
177  nn::pia::inet::SelectionMethod_BroadenRangeWithSelectionPriority,
178  nn::pia::inet::SelectionMethod_ScoreBased で検索を行った場合のみ有効です。
179  nn::pia::inet::SessionSelectionPriorityMax を超えた値を引数にした場合、nn::pia::inet::SessionSelectionPriorityMax が設定されます。
180  @param[in] priority 指定するマッチメイクの優先度
181  */
182  void SetSelectionPriority(uint8_t priority);
183 
184  /*!
185  @brief アプリケーション定義のデータを指定します。
186  @details inet::ApplicationDataBufferSizeMax を超えないサイズを指定する必要があります。
187  @param[in] pData セッションに指定するアプリケーション定義データのバッファ。
188  @param[in] size セッションに指定するアプリケーション定義データのサイズ。ApplicationDataBufferSizeMax 以下である必要があります。
189  @return アプリケーション定義データの設定に成功すれば、成功の Result が返されます。
190 
191  @retval nn::pia::ResultInvalidArgument バッファが NULL ポインタ、または指定したデータサイズが大きすぎます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
192  */
193  virtual Result SetApplicationData(const void* pData, uint32_t size);
194 
195  /*!
196  @cond PRIVATE
197  @brief 指定したアプリケーション定義のデータを取得します。
198  @param[in] pDataBuf 指定したアプリケーション定義データのコピー用バッファ。
199  @param[in] dataBufSize コピー用バッファのサイズ。
200  @return アプリケーション定義データの取得に成功すれば、成功の Result が返されます。
201 
202  @retval nn::pia::ResultInvalidArgument バッファが NULL ポインタです。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
203  @retval nn::pia::ResultInvalidState アプリケーション定義データが設定されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
204  @retval nn::pia::ResultBufferShortage 設定されているアプリケーション定義データのサイズがバッファのサイズよりも大きいため、コピーできません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
205  */
206  virtual Result GetApplicationData(void* pDataBuf, uint32_t dataBufSize) const;
207  //! @endcond
208 
209  /*!
210  @cond PRIVATE
211  @brief 指定したアプリケーション定義のデータサイズを取得します。
212  @return アプリケーション定義データサイズが返されます。
213  */
214  virtual uint32_t GetApplicationDataSize() const;
215  //! @endcond
216 
217  /*!
218  @brief セッションの開始日時の更新日時を指定します。
219  @details 現在時刻より未来の日時が設定された場合は、現在時刻がサーバーでセットされます。
220  @param[in] dateTime 開始日時
221  @return セッションの開始日時の更新日時の指定に成功すれば、成功の Result が返されます。
222 
223  @retval nn::pia::ResultInvalidArgument 日時が設定されていない、または設定した日時が正しくありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
224  */
225  Result SetStartedTime(const common::DateTime& dateTime);
226 
227 
228  /*!
229  @brief 代入演算子です。
230  @param[in] rhs 代入するオブジェクトです。
231  @return 本オブジェクトへの参照。
232  */
234 
235  /*!
236  @brief 設定をコピーします。
237  @param[in] rhs コピー元のオブジェクトです。
238  */
239  void Copy(const NexUpdateSessionSetting& rhs);
240 
241  /*!
242  @brief コピーコンストラクタ。
243  @param[in] rhs コピー元のオブジェクトです。
244  */
246 
247  /*!
248  @brief 設定をリセットします。
249  */
250  virtual void Reset();
251 
252  /*!
253  @cond PRIVATE
254  @brief デバッグに有用な情報をプリント。
255  */
256  virtual void Trace(uint64_t flag) const;
257  //! @endcond
258 
259  /*!
260  @cond PRIVATE
261  @brief スコアベースマッチメイク指定時に、比較に使用するパラメータを設定します。
262  @param[in] index パラメータのインデックス。AdditionalParamKeySizeMax 以下である必要があります。
263  @param[in] keyString パラメータの名前。AdditionalParamKeyLength 以下である必要があります。
264  @param[in] value パラメータの値
265  @return パラメータの指定に成功すれば、成功の Result が返されます。
266 
267  @retval nn::pia::ResultInvalidArgument パラメータのインデックスが範囲外、またはパラメータの名前の文字列が NULL、文字コードが不正、最大文字列長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
268  */
269  Result SetAdditionalScoreBasedParameterValue(uint32_t index, const common::String& keyString, const struct ParamVariant& value);
270  //! @endcond
271 
272  /*!
273  @cond PRIVATE
274  @brief スコアベースマッチメイク指定時に、比較に使用するパラメータを設定します。
275  @param[in] index パラメータのインデックス。AdditionalParamStringSizeMax 以下である必要があります。
276  @param[in] keyString パラメータの名前。AdditionalParamKeyLength 以下である必要があります。
277  @param[in] value パラメータの文字列。AdditionalParamStringLength 以下である必要があります。
278  @return パラメータの指定に成功すれば、成功の Result が返されます。
279 
280  @retval nn::pia::ResultInvalidArgument パラメータのインデックスが範囲外、またはパラメータの名前やパラメータの文字列が NULL、文字コードが不正、最大文字列長を超えています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
281  */
282  Result SetAdditionalScoreBasedParameterString(uint32_t index, const common::String& keyString, const common::String& value);
283  //! @endcond
284 
285  /*!
286  @cond PRIVATE
287  */
288  const common::String* GetAdditionalScoreBasedParameterValueKey(uint32_t index) const;
289  const struct ParamVariant& GetAdditionalScoreBasedParameterValue(uint32_t index) const;
290  bool IsSetAdditionalScoreBasedParameterValue(uint32_t index) const;
291  const common::String* GetAdditionalScoreBasedParameterStringKey(uint32_t index) const;
292  const common::String* GetAdditionalScoreBasedParameterString(uint32_t index) const;
293  bool IsSetAdditionalScoreBasedParameterString(uint32_t index) const;
294  //! @endcond
295 
296  /*!
297  @cond PRIVATE
298  */
299  uint16_t GetMinParticipantNum() const;
300  bool IsSetMinParticipantNum() const;
301  uint16_t GetMaxParticipantNum() const;
302  bool IsSetMaxParticipantNum() const;
303  SessionType GetSessionType() const;
304  bool IsAutoCloseSession() const;
305  bool IsSetSessionType() const;
306  uint32_t GetAttribute(uint32_t index) const;
307  bool IsAttributeUpdated(uint32_t index) const;
308  const common::String& GetSessionUserPassword() const;
309  bool IsSetSessionUserPassword() const;
310  const common::String& GetSessionMatchmakeKeyword() const;
311  bool IsSetSessionMatchmakeKeyword() const;
312  const common::DateTime& GetStartedTime() const;
313  bool IsSetStartedTime() const;
314  uint32_t GetRatingValue() const;
315  bool IsSetRatingValue() const;
316  uint32_t GetDisconnectionRate() const;
317  bool IsSetDisconnectionRate() const;
318  uint32_t GetViolationRate() const;
319  bool IsSetViolationRate() const;
320 #if NN_PIA_ENABLE_ISO_COUNTRY_CODE
321  const common::String* GetCountryCode() const;
322 #else
323  uint32_t GetCountryCode() const;
324 #endif
325  bool IsSetCountryCode() const;
326  bool GetUpdateGeoIp() const;
327  bool IsSetUpdateGeoIp() const;
328  uint8_t GetSelectionPriority() const;
329  bool IsSetSelectionPriority() const;
330  void CopyApplicationDataToVector(void* pVectorTmp) const;
331  bool IsSetScoreBaseParam() const;
332  uint32_t GetNexModificationFlag() const;
333  bool IsOnlyApplicationDataUpdated() const;
334  bool IsOnlyAttributeUpdated() const;
335  bool IsOnlyAllAttributesUpdated() const;
336  bool IsValid() const;
337  //! @endcond
338 
339 protected:
340  uint16_t m_MinParticipantNum;
341  uint16_t m_MaxParticipantNum;
342  SessionType m_SessionType;
343  bool m_IsAutoCloseSession;
344  uint32_t m_Attribute[AttributeSizeMax];
345  bool m_IsAttributeUpdated[AttributeSizeMax];
346  uint8_t m_ApplicationDataBuffer[ApplicationDataBufferSizeMax];
347  uint32_t m_ApplicationDataSize;
348  uint8_t m_SelectionPriority;
351  common::DateTime m_StartedTime;
352  uint32_t m_RatingValue;
353  bool m_IsSetRatingValue;
354  uint32_t m_DisconnectionRate;
355  bool m_IsSetDisconnectionRate;
356  uint32_t m_ViolationRate;
357  bool m_IsSetViolationRate;
358 #if NN_PIA_ENABLE_ISO_COUNTRY_CODE
360 #else
361  uint32_t m_CountryCode;
362 #endif
363  bool m_IsSetCountryCode;
364  bool m_IsUpdateGeoIp;
365  bool m_IsSetUpdateGeoIp;
366 
367  common::FixedString<AdditionalParamKeyLength> m_AdditionalParamValueKey[AdditionalParamKeySizeMax];
368  struct ParamVariant m_AdditionalParamValue[AdditionalParamKeySizeMax];
369 
370  common::FixedString<AdditionalParamKeyLength> m_AdditionalParamStringKey[AdditionalParamStringSizeMax];
371  common::FixedString<AdditionalParamStringLength> m_AdditionalParamString[AdditionalParamStringSizeMax];
372 
373  uint32_t m_NexModificationFlag;
374 
375  /*!
376  @cond PRIVATE
377  */
378  void AddNexModificationFlag(uint32_t flag);
379  bool IsNexModificationFlagSet(uint32_t bit) const;
380  //! @endcond
381 
382 private:
383 };
384 }
385 }
386 } // end of namespace nn::pia::inet
387 
388 #endif