CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
lan_LanSessionInfo.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 #include <nn/pia/lan/lan_LanStationInfo.h>
18 #include <nn/pia/lan/lan_LanNetworkFactory.h>
19 #include <nn/pia/common/common_FixedString.h>
20 #include <nn/pia/transport/transport_StationConnectionInfo.h>
21 #include <nn/pia/session/session_ISessionInfo.h>
22 
23 namespace nn
24 {
25 namespace pia
26 {
27 namespace lan
28 {
29 
30 /*!
31  @brief LAN マッチメイクのセッション情報クラスです。
32 
33  @see session::ISessionInfo
34 */
36 {
37 public:
39  virtual ~LanSessionInfo();
40 
41  /*!
42  @brief セッションのゲームモードを取得します。
43  @return セッションのゲームモードを返します。
44  */
45  virtual uint32_t GetGameMode() const;
46 
47  /*!
48  @brief セッションの ID を取得します。
49  @return セッションの ID を返します。
50  */
51  virtual uint32_t GetSessionId() const;
52 
53  /*!
54  @brief セッションに参加している人数を取得します。
55  @return セッションに参加している人数を返します。
56  */
57  virtual uint16_t GetCurrentParticipantNum() const;
58 
59  /*!
60  @brief セッションに参加できる最小人数を取得します。
61  @return セッションに参加できる最小人数を返します。
62  */
63  virtual uint16_t GetMinParticipantNum() const;
64 
65  /*!
66  @brief セッションに参加できる最大人数を取得します。
67  @return セッションに参加できる最大人数を返します。
68  */
69  virtual uint16_t GetMaxParticipantNum() const;
70 
71  /*!
72  @brief セッションが参加募集受付状態かどうかを取得します。
73  @return セッションが参加募集受付状態なら true, 参加募集締切状態なら false を返します。
74  */
75  virtual bool IsOpened() const;
76 
77  /*!
78  @brief セッションのアプリケーション定義データを取得します。
79  @details セッションに設定したアプリケーション定義データを取得します。
80  @param[out] pBuffer セッションのアプリケーション定義データのコピー用バッファのポインタ。
81  @param[in] size セッションのアプリケーション定義データのコピー用バッファのサイズ。アプリケーション定義データの最大長は LanApplicationDataBufferSizeMax です。
82  @return 正常に情報を取得できた場合、成功の Result が返ります。
83  @retval ResultInvalidArgument バッファが NULL ポインタです。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
84  @retval ResultInvalidState アプリケーション定義データが設定されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
85  @retval ResultBufferShortage 設定されているアプリケーション定義データのサイズがバッファのサイズよりも大きいため、コピーできません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
86  */
87  virtual Result GetApplicationData(void* pBuffer, uint32_t size) const;
88 
89  /*!
90  @brief セッションのアプリケーション定義データの長さを取得します。
91  @return セッションのアプリケーション定義データの長さが返ります。
92  */
93  virtual uint32_t GetApplicationDataSize() const;
94 
95  /*!
96  @brief セッションの属性を取得します。
97  @param[in] idx 取得する属性のインデックス。LanAttributeSizeMax 以下である必要があります。
98  @param[out] pAttribute 指定されたインデックスのセッションの属性格納先のポインタ。
99  @return 正常に情報を取得できた場合、成功の Result が返ります。
100  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
101  */
102  virtual Result GetAttribute(uint8_t idx, uint32_t* pAttribute) const;
103 
104  /*!
105  @brief セッションタイプを取得します。
106  @return 設定されているセッションタイプが返ります。
107  */
108  virtual LanSessionType GetSessionType() const;
109 
110  /*!
111  @brief セッションのホストのプリンシパル ID を取得します。
112  @return セッションのホストのプリンシパル ID が返ります。
113  */
114  virtual PrincipalId GetHostPrincipalId() const;
115 
116  /*!
117  @brief セッションに参加中のステーション情報を取得します。
118  @param[out] pSessoinStationInfoList ステーション情報リスト格納先のポインタ。
119  @param[in] sessionStationInfoListSize ステーション情報リスト格納先のサイズ。参加中のステーション数以上である必要があります。
120  @return 正常に情報を取得できた場合、成功の Result が返ります。
121  @retval ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
122  @retval ResultInvalidState データを取得できる状態ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
123  @retval ResultBufferShortage ステーション情報のサイズがステーション情報格納先のサイズよりも大きいため、コピーできません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
124  */
125  virtual Result GetSessionStationInfo(LanStationInfo* pSessoinStationInfoList, uint32_t sessionStationInfoListSize);
126 
127  /*!
128  @brief セッションに参加中のステーション情報のサイズを取得します。
129  @return セッションに参加中のステーション情報のサイズを返します。
130  */
131  virtual uint32_t GetSessionStationInfoSize() const;
132 
133  /*!
134  @brief セッションの通信バージョンを取得します。
135  @return セッションの通信バージョンを返します。
136  */
137  virtual uint8_t GetLocalCommunicationVersion() const;
138 
139  /*!
140  @brief セッション情報をクリアします。
141  */
142  virtual void Clear();
143 
144  /*!
145  @brief セッション情報をコピーします。
146  @param[in] rhs コピーするセッション情報
147  */
148  virtual void Copy(const LanSessionInfo& rhs);
149 
150  /*!
151  @brief コピーコンストラクタ。
152  @param[in] rhs コピー元のオブジェクトです。
153  */
154  LanSessionInfo(const LanSessionInfo& rhs);
155 
156  /*!
157  @brief 代入演算子です。
158  @param[in] rhs 代入するオブジェクトです。
159  @return 本オブジェクトへの参照。
160  */
162 
163 
164  /*!
165  @brief デバッグに有用な情報をプリントします。
166  @param[in] flag トレースフラグの論理和。詳細は @ref TraceFlag 型を参照してください。
167  */
168  virtual void Trace(uint64_t flag) const;
169 
170  /*!
171  @cond PRIVATE
172  */
173  virtual void SetGameMode(uint32_t gameMode);
174  virtual void SetSessionId(uint32_t sessionId);
175  virtual void SetCurrentParticipantNum(uint16_t participants);
176  virtual void SetMinParticipantNum(uint16_t participants);
177  virtual void SetMaxParticipantNum(uint16_t participants);
178  virtual void SetOpen(bool isOpened);
179  virtual void SetSessionType(LanSessionType type);
180  virtual void SetAttribute(uint8_t index, uint32_t attribute);
181  virtual void SetApplicationData(const void* pData, uint32_t size);
182  virtual transport::StationConnectionInfo& GetStationConnectionInfo();
183  virtual void SetStationConnectionInfo(const transport::StationConnectionInfo& info);
184  virtual void AddSessionStationInfo(const LanStationInfo& stationInfo);
185  virtual void ClearSessionStationInfo();
186  virtual void SetSystemVersion(uint8_t version);
187  virtual uint8_t GetSystemVersion() const;
188  virtual void SetLocalCommunicationVersion(uint8_t version);
189  Result Serialize(uint8_t* pBuffer, uint32_t* pDataSize, uint32_t bufferSize) const;
190  Result Deserialize(const uint8_t* pData, uint32_t dataSize);
191  uint32_t GetSerializedSize() const;
192  //! @endcond
193 
194 protected:
195  uint32_t m_GameMode;
196  uint32_t m_SessionId;
197  uint16_t m_CurrentParticipantNum;
198  uint16_t m_MinParticipantNum;
199  uint16_t m_MaxParticipantNum;
200  bool m_bIsOpened;
201 
202  uint32_t m_Attribute[LanAttributeSizeMax];
203  uint8_t m_SystemVersion;
204  uint8_t m_LocalCommunicationVersion;
205  uint16_t m_SessionType;
206  uint8_t m_ApplicationData[LanApplicationDataBufferSizeMax];
207  uint32_t m_ApplicationDataSize;
208  transport::StationConnectionInfo m_StationConnectionInfo;
209  LanStationInfo m_StationInfoList[LanMaxStationNum];
210  uint32_t m_StationInfoSize;
211 };
212 }
213 }
214 } // end of namespace nn::pia::inet