CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
local_LocalNetworkFactory.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/local/local_Definitions.h>
17 #include <nn/pia/transport/transport_NetworkFactory.h>
18 
19 
20 namespace nn
21 {
22 namespace pia
23 {
24 namespace local
25 {
26 
27 
28 /*!
29  @class nn::pia::local::LocalNetworkFactory
30  @brief LocalFacade を利用したネットワークに必要なクラスを生成するための基底クラスです(ファクトリパターン)。
31 
32  @details アプリケーションが本クラスを使用することはありません。本クラスを継承したクラスを使用してください。
33 
34  @if CTR_DOC
35  @see nn::pia::local::UdsNetworkFactory
36  @elseif NIN_DOC
37  @see nn::pia::local::LdnNetworkFactory
38  @endif
39  */
41 {
42 public:
43  /*!
44  @cond PRIVATE
45  */
46 
47 
48  /*!
49  @brief デストラクタです。
50  */
51  virtual ~LocalNetworkFactory(void);
52 
53  /*!
54  @brief InputStream を生成します。
55  */
56  virtual nn::pia::common::IPacketInput* CreateInputStream() = 0;
57 
58  /*!
59  @brief OutputStream を生成します。
60  */
61  virtual nn::pia::common::IPacketOutput* CreateOutputStream() = 0;
62 
63  /*!
64  @brief ConnectStationJob を生成します。
65  */
66  virtual nn::pia::transport::ConnectStationJob* CreateConnectStationJob();
67 
68 
69  /*!
70  @brief DisconnectStationJob を生成します。
71  */
72  virtual nn::pia::transport::DisconnectStationJob* CreateDisconnectStationJob();
73 
74 
75  /*!
76  @brief CreateMeshJob を生成します。
77  */
78  virtual nn::pia::common::StepSequenceJob* CreateCreateMeshJob();
79 
80 
81  /*!
82  @brief JoinMeshJob を生成します。
83  */
84  virtual nn::pia::common::StepSequenceJob* CreateJoinMeshJob();
85 
86 
87  /*!
88  @brief LeaveMeshJob を生成します。
89  */
90  virtual nn::pia::common::StepSequenceJob* CreateLeaveMeshJob();
91 
92 
93  /*!
94  @brief ProcessHostMigrationJob を生成します。
95  */
96  virtual nn::pia::common::StepSequenceJob* CreateProcessHostMigrationJob();
97 
98 
99  /*!
100  @brief LeaveWithHostMigrationJob を生成します。
101  */
102  virtual common::StepSequenceJob* CreateLeaveWithHostMigrationJob();
103 
104 
105  /*!
106  @brief KickoutManageJob を生成します。
107  */
108  virtual nn::pia::common::StepSequenceJob* CreateKickoutManageJob();
109 
110 
111  /*!
112  @brief PacketHandler の具象インスタンスを構築します。
113  */
114  virtual transport::PacketHandler* CreatePacketHandler();
115 
116 
117  /*!
118  @brief 署名が必要かどうか。
119  */
120  virtual bool IsSignatureRequired() const;
121 
122 
123  /*!
124  @brief SignatureSettingStorage を生成します。
125  */
126  virtual session::SignatureSettingStorage* CreateSignatureSettingStorage();
127 
128 
129  /*!
130  @brief ネットワーク層におけるパケットのヘッダ部分の合計サイズを返します。単位はバイトです。
131  */
132  virtual uint32_t GetHeaderSize() const = 0;
133 
134 
135  /*!
136  @brief デバッグに有用な情報をプリントします。
137 
138  @param[in] flag トレースフラグの論理和。詳細は@ref TraceFlag 型を参照してください。
139  */
140  virtual void Trace(uint64_t flag) const;
141 
142  /* 自動マッチメイク機能用 */
143  /*!
144  @brief Session 用 CreateSessionJob を生成します。
145  */
146  virtual common::StepSequenceJob* CreateMatchCreateSessionJob();
147 
148 
149  /*!
150  @brief Session 用 AutoMatchmakeSessionJob を生成します。
151  */
152  virtual common::StepSequenceJob* CreateMatchAutoMatchmakeSessionJob();
153 
154 
155  /*!
156  @brief Session 用 BrowseMatchmakeSessionJob を生成します。
157  */
158  virtual common::StepSequenceJob* CreateMatchBrowseMatchmakeSessionJob();
159 
160 
161  /*!
162  @brief Session 用 JoinSessionJob を生成します。
163  */
164  virtual common::StepSequenceJob* CreateMatchJoinSessionJob();
165 
166 
167  /*!
168  @brief Session 用 LeaveSessionJob を生成します。
169  */
170  virtual common::StepSequenceJob* CreateMatchLeaveSessionJob();
171 
172 
173  /*!
174  @brief Session 用 DestroySessionJob を生成します。
175  */
176  virtual common::StepSequenceJob* CreateMatchDestroySessionJob();
177 
178  /*!
179  @brief ジョイントセッション機能用 JointSessionJob を生成します。
180  */
181  virtual common::StepSequenceJob* CreateJointSessionJob();
182 
183  /*!
184  @brief Session 用 UpdateSessionSetting を生成します。
185  */
186  virtual common::StepSequenceJob* CreateUpdateSessionSettingJob();
187 
188  /*!
189  @cond PRIVATE
190  @brief Session 用 CommunityManagementJob を生成します。
191  */
192  virtual common::StepSequenceJob* CreateCommunityManagementJob();
193  //! @endcond
194 
195  /*!
196  @brief Session 用 GenerateMatchmakeSystemPasswordJob を生成します。
197  ローカルには不要なので NULL を返します。
198  */
199  virtual common::StepSequenceJob* CreateGenerateMatchmakeSystemPasswordJob();
200 
201  /*!
202  @brief Session 用 ClearMatchmakeSystemPasswordJob を生成します。
203  ローカルには不要なので NULL を返します。
204  */
205  virtual common::StepSequenceJob* CreateClearMatchmakeSystemPasswordJob();
206 
207  virtual common::String* CreateMatchmakeSessionSystemPassword();
208 
209  /*!
210  @brief Session 用 IMatchmakeSession を生成します。
211  */
212  virtual session::IMatchmakeSession* CreateMatchmakeSession() = 0;
213 
214  /*!
215  @brief Session 用 ISessionInfoList を生成します。
216  */
217  virtual session::ISessionInfoList* CreateSessionInfoList(uint16_t browseSessionInfoListNum) = 0;
218 
219  /*!
220  @brief Session 用 ICommunityInfoList を生成します。
221  */
222  virtual session::ICommunityInfoList* CreateCommunityInfoList(uint8_t browsedCommunityInfoListNum);
223 
224  /*!
225  @brief Session 用 MeshLayerController を生成します。
226  */
227  virtual session::MeshLayerController* CreateMatchMeshLayerController();
228 
229  virtual bool IsBindRequired() const;
230 
231  virtual bool IsServerRequired() const;
232 
233  virtual bool IsRecentPlayRecordPermitted() const = 0;
234 
235  virtual bool IsMultiplayerPermitted() const = 0;
236 
237  virtual int32_t GetHostMigrationMode() const;
238 
239  virtual uint16_t GetBrowseSessionInfoListSizeMax() const = 0;
240 
241  virtual uint8_t GetBrowseCommunityInfoListSizeMax() const = 0;
242 
243  /*!
244  @brief MTU の最大値(UDP、IPv4 のヘッダのようなネットワーク層のヘッダサイズを含む)です。
245  */
246  virtual uint32_t GetMtuSizeMax() const = 0;
247 
248  /*!
249  @brief MTU の最小値(UDP、IPv4 のヘッダのようなネットワーク層のヘッダサイズを含む)です。
250  */
251  virtual uint32_t GetMtuSizeMin() const = 0;
252 
253  /*!
254  @brief 初期段階での RTT 計測パルス送信間隔のデフォルト値です。単位はミリ秒です。
255  */
256  virtual int GetDefaultRttInitialPulseInterval() const;
257 
258  /* 自動マッチメイク機能用 */
259 
260 
261  /*!
262  @endcond
263  */
264 
265 protected:
266  /*!
267  @cond PRIVATE
268  @brief デフォルトコンストラクタです。
269  */
270  LocalNetworkFactory(void);
271  //! @endcond
272 
273 private:
274 };
275 }
276 }
277 } // end of namespace nn::pia::local