CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
lan_LanCreateSessionSetting.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/lan/lan_LanSessionTypes.h>
17 
18 #include <nn/pia/common/common_FixedString.h>
19 #include <nn/pia/session/session_CreateSessionSetting.h>
20 
21 namespace nn
22 {
23 namespace pia
24 {
25 namespace lan
26 {
27 /*!
28  @brief LAN マッチメイクのセッション構築処理に関する設定を管理するクラスです。
29 
30  @see nn::pia::session::CreateSessionSetting
31  */
33 {
34 public:
35  /*!
36  @brief デフォルトコンストラクタ。
37  */
39 
40  /*!
41  @brief デストラクタ。
42  */
43  virtual ~LanCreateSessionSetting();
44 
45  /*!
46  @cond PRIVATE
47  @brief 指定した項目の示すビットマスクの各ビットに対応する項目
48  */
49  enum LanCreateSessionSettingMask
50  {
51  LanCreateSessionSettingMask_GameMode = 0, //!< ゲームモード
52  LanCreateSessionSettingMask_SessionType, //!< セッションタイプ
53  LanCreateSessionSettingMask_Attribute, //!< 属性
54  LanCreateSessionSettingMask_ApplicationData = LanCreateSessionSettingMask_Attribute + LanAttributeSizeMax, //!< アプリケーション定義データ
55  LanCreateSessionSettingMask_OpenSession //!< 参加可能かどうか
56  };
57  //! @endcond
58 
59  /*!
60  @brief 構築するセッションのゲームモードを指定します。
61  @param[in] gameMode 構築するセッションに指定するゲームモード。
62  */
63  void SetGameMode(uint32_t gameMode);
64 
65  /*!
66  @cond PRIVATE
67  */
68  uint32_t GetGameMode() const;
69  bool IsSetGameMode() const;
70  /*! @endcond */
71 
72  /*!
73  @brief 構築するセッションタイプを指定します。
74  @param[in] sessionType 構築するセッションに指定するセッションタイプ。
75  */
76  void SetSessionType(LanSessionType sessionType);
77 
78  /*!
79  @cond PRIVATE
80  */
81  LanSessionType GetSessionType() const;
82  bool IsSetSessionType() const;
83  /*! @endcond */
84 
85  /*!
86  @brief 構築するセッションに属性を指定します。
87  @param[in] index 構築するセッションに指定する属性のインデックス。LanAttributeSizeMax 以下である必要があります。
88  @param[in] value 構築するセッションに指定する属性の値。
89  @return セッションの属性の指定に成功すれば、成功の Result が返されます。
90  @retval nn::pia::ResultInvalidArgument 属性のインデックスが範囲外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
91  */
92  Result SetAttribute(uint32_t index, uint32_t value);
93 
94  /*!
95  @cond PRIVATE
96  */
97  uint32_t GetAttribute(uint32_t index) const;
98  bool IsSetAttribute(uint32_t index) const;
99  /*! @endcond */
100 
101  /*!
102  @brief アプリケーション定義のデータを指定します。
103  @param[in] pData 構築するセッションに指定するアプリケーション定義データのバッファ。
104  @param[in] size 構築するセッションに指定するアプリケーション定義データのサイズ。LanApplicationDataBufferSizeMax 以下である必要があります。
105  @return アプリケーション定義データの設定に成功すれば、成功の Result が返されます。
106 
107  @retval nn::pia::ResultInvalidArgument バッファが NULL ポインタ、または指定したデータサイズが大きすぎます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
108  */
109  virtual Result SetApplicationData(const void* pData, uint32_t size);
110 
111  /*!
112  @cond PRIVATE
113  @brief 指定したアプリケーション定義のデータを取得します。
114  @param[in] pDataBuf 指定したアプリケーション定義データのコピー用バッファ。
115  @param[in] dataBufSize コピー用バッファのサイズ。
116  @return アプリケーション定義データの取得に成功すれば、成功の Result が返されます。
117 
118  @retval nn::pia::ResultInvalidArgument バッファが NULL ポインタです。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
119  @retval nn::pia::ResultInvalidState アプリケーション定義データが設定されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
120  @retval nn::pia::ResultBufferShortage 設定されているアプリケーション定義データのサイズがバッファのサイズよりも大きいため、コピーできません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
121  */
122  virtual Result GetApplicationData(void* pDataBuf, uint32_t dataBufSize) const;
123  //! @endcond
124 
125  /*!
126  @cond PRIVATE
127  */
128  virtual uint32_t GetApplicationDataSize() const;
129  virtual bool IsSetApplicationData() const;
130  //! @endcond
131 
132  /*!
133  @brief 構築したセッションが参加可能で構築されるか、参加不可で構築されるかを指定します。
134  @param[in] isOpen true を設定した場合、セッションは参加可能な状態で構築されます。
135  */
136  void SetOpenSession(bool isOpen);
137 
138  /*!
139  @cond PRIVATE
140  */
141  bool IsOpenSession() const;
142  bool IsSetOpenSession() const;
143  //! @endcond
144 
145  /*!
146  @brief 代入演算子です。
147  @param[in] rhs 代入するオブジェクトです。
148  @return 本オブジェクトへの参照。
149  */
151 
152  /*!
153  @brief 設定をコピーします。
154  @param[in] rhs コピー元のオブジェクトです。
155  */
156  void Copy(const LanCreateSessionSetting& rhs);
157 
158  /*!
159  @brief コピーコンストラクタ。
160  @param[in] rhs コピー元のオブジェクトです。
161  */
163 
164  /*!
165  @brief 設定をリセットします。
166  */
167  virtual void Reset();
168 
169  /*!
170  @cond PRIVATE
171  @brief デバッグに有用な情報をプリントします。
172  @param[in] flag トレースフラグです。詳細は @ref TraceFlag 型を参照してください。
173  @endcond
174  */
175  virtual void Trace(uint64_t flag) const;
176 
177 
178 protected:
179  uint32_t m_GameMode;
180  LanSessionType m_SessionType;
181  uint32_t m_Attribute[LanAttributeSizeMax];
182  uint8_t m_ApplicationDataBuffer[LanApplicationDataBufferSizeMax];
183  uint32_t m_ApplicationDataSize;
184  bool m_OpenParticipation;
185  uint32_t m_SetCondMask;
186 
187 private:
188 };
189 }
190 }
191 } // end of namespace nn::pia::lan