CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
session_Session.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/session/session_Definitions.h>
17 #include <nn/pia/session/session_Mesh.h>
18 
19 #include <nn/pia/common/common_AsyncContext.h>
20 #include <nn/pia/common/common_CryptoSetting.h>
21 #include <nn/pia/common/common_ObjList.h>
22 #include <nn/pia/common/common_String.h>
23 
24 #include <nn/pia/transport/transport_NetworkFactory.h>
25 #include <nn/pia/transport/transport_Transport.h>
26 #include <nn/pia/transport/transport_Station.h>
27 #include <nn/pia/transport/transport_StationConnectionInfo.h>
28 
29 namespace nn
30 {
31 namespace pia
32 {
33 namespace session
34 {
35 
36 // 先行宣言
37 class CreateSessionSetting;
38 class JoinRandomSessionSetting;
39 class JoinSessionSetting;
40 class SessionStatusCheckJob;
41 class CreateSessionJob;
42 class AutoMatchmakeJob;
43 class BrowseMatchmakeJob;
44 class JoinSessionJob;
45 class DestroySessionJob;
46 class LeaveSessionJob;
47 class OpenParticipationJob;
48 class CloseParticipationJob;
49 class GenerateMatchmakeSystemPasswordJob;
50 class ClearMatchmakeSystemPasswordJob;
51 class JointSessionJob;
52 class UpdateSessionSettingJob;
53 class UpdateApplicationDataJob;
54 class CommunityManagementJob;
55 class CreateCommunitySetting;
56 class JoinCommunitySetting;
57 class CommunitySearchCriteria;
58 class ICommunityInfoList;
59 class UpdateCommunitySetting;
60 
61 class StationIdStatusTable;
62 class SessionProtocol;
63 class IMatchmakeSession;
64 class ISessionInfo;
65 class ISessionInfoList;
66 class MeshLayerController;
67 class MatchNetworkFactory;
68 class SessionSearchCriteria;
69 class ISessionInfo;
70 class ISessionInfoList;
71 class MeshEventListener;
72 class UpdateSessionSetting;
73 class ProcessHostMigrationJob;
74 
75 #if NN_PIA_NINTENDOSDK && NN_PIA_ENABLE_NSA
76 class AddPlayHistoryJob;
77 #endif
78 /*!
79  @class nn::pia::session::Session
80  @brief マッチメイク処理と P2P 通信用セッションの構築/参加処理をまとめるクラスです。
81 
82  @details このクラスはシングルトンパターンです。単一のインスタンスしか生成できません。
83  <br>
84  Session 内部の処理の一部は @ref common::Scheduler にジョブとして登録されますので、
85  @ref common::Scheduler::Dispatch を定期的に呼び出す必要があります。
86  */
88 {
89  friend class SessionStatusCheckJob;
90  friend class CreateSessionJob;
91  friend class AutoMatchmakeJob;
92  friend class JoinSessionJob;
93  friend class JointSessionJob;
94  friend class DestroySessionJob;
95  friend class LeaveSessionJob;
96  friend class OpenParticipationJob;
97  friend class CloseParticipationJob;
98  friend class SessionProtocol;
99  friend class StationIdStatusTable;
100  friend class MeshEventListener;
101  friend class MeshLayerController;
102  friend class UpdateApplicationDataJob;
103  friend class UpdateSessionSettingJob;
104  friend class GenerateMatchmakeSystemPasswordJob;
105  friend class ClearMatchmakeSystemPasswordJob;
106  friend class CommunityManagementJob;
107  friend class ProcessHostMigrationJob;
108 #if NN_PIA_NINTENDOSDK && NN_PIA_ENABLE_NSA
109  friend class AddPlayHistoryJob;
110 #endif
111 
112 public:
113  /*!
114  @brief @ref session::Session::CreateInstance() に各種パラメータを渡すための構造体です。
115  @see CreateInstance
116  */
117  struct Setting
118  {
119  Setting(void)
120  : pNetworkFactory(NULL),
125  {
126  }
127 
128  transport::NetworkFactory* pNetworkFactory; //!< ネットワーク毎に指定する NetworkFactory のポインタです。
129  NetworkTopology networkTopology; //!< セッションのネットワークトポロジー設定です。@if CTR_DOC ローカル通信、Lan 通信時には NetworkTopology_FullMesh 以外の値は指定できません。@endif @if CAFE_DOC Lan 通信時には NetworkTopology_FullMesh 以外の値は指定できません。@endif @if NIN_DOC ローカル通信、Lan 通信時には NetworkTopology_FullMesh 以外の値は指定できません。@endif
130  uint16_t browsedSessionInfoListNum; //!< セッションの検索結果を格納するリストのサイズです。
131  uint8_t browsedCommunityInfoListNum; //!< コミュニティの検索結果を格納するリストのサイズです。インターネット通信時以外は 0 (デフォルト値)を設定してください。
132  BitRateCheckMode bitRateCheckMode; //!< ビットレート判定機能の設定です。
133  };
134 
135  /*!
136  @brief (デバッグ用) @ref session::Session::SetDebugSetting に渡すデバッグ機能設定用構造体です。
137  */
139  {
140  DebugSetting(bool argIsRelayEmulationEnabled = false, bool argIsMatchmakeAnalysisEnabled = false, bool argIsCheckMaxSilenceTimeEnabled = true)
141  : isRelayEmulationEnabled(argIsRelayEmulationEnabled),
142  isMatchmakeAnalysisEnabled(argIsMatchmakeAnalysisEnabled),
143  isCheckMaxSilenceTimeEnabled(argIsCheckMaxSilenceTimeEnabled)
144  {
145  }
146  bool isRelayEmulationEnabled; //!< デバッグ用接続経路エミュレーション機能設定です。
147  bool isMatchmakeAnalysisEnabled; //!< マッチメイク分析機能用設定です。
148  bool isCheckMaxSilenceTimeEnabled; //!< 最大無通信時間の設定値の範囲チェックを行います。
149  };
150 
151  /*!
152  @brief @ref session::Session::Startup に渡す設定用構造体です。
153  @details アプリケーションが本構造体のインスタンスを作成することはありません。 本構造体を継承した構造体を使用する必要があります。
154 
155  @if CTR_DOC
156  @see local::LocalSessionStartupSetting
157  @endif
158  @if NIN_DOC
159  @see local::LocalSessionStartupSetting
160  @endif
161  @see inet::NexSessionStartupSetting
162  @see lan::LanSessionStartupSetting
163  */
165  {
166  protected:
170  pToken(NULL)
171  {
172  }
173 
174  public:
175  uint32_t maxSilenceTime; //!< 許容される最大無通信時間 [msec] を指定します。デフォルトは session::SessionMaxSilenceTimeDefault です。設定可能な最大値は session::SessionMaxSilenceTimeMax, 最小値は session::SessionMaxSilenceTimeMin です。
176  uint32_t keepAliveSendingInterval; //!< キープアライブの送信間隔 [msec] を指定します。デフォルトは session::SessionKeepAliveIntervalDefault です。
177  const transport::Station::IdentificationToken* pToken; //!< 自分自身を示す識別トークンのポインタを指定します。NULL を指定した場合、データが全て NULL の識別トークンが使用されます。デフォルトは NULL です。
178  };
179 
180  /*
181  @cond PRIVATE
182  @brief Session の状態を表す列挙型です。
183  */
184  enum ModuleState
185  {
186  ModuleState_Initialized = 0, //!< 初期化完了
187  ModuleState_StartupComplete //!< マッチメイク処理実行可能
188  };
189  //! @endcond
190 
191  /*!
192  @cond PRIVATE
193  @brief マッチメイクの状態を表す列挙型です。
194  */
195  enum MatchmakeStatus
196  {
197  MatchmakeStatus_NotInSession = 0, //!< 非接続状態
198  MatchmakeStatus_JoinedMatchmake, //!< マッチメイクセッションへ参加済み
199  MatchmakeStatus_EstablishedSession, //!< セッションへ参加済み
200  MatchmakeStatus_ChangingSession, //!< ジョイントセッション機能によるセッション移行処理中(送受信不可期間有り)
201  MatchmakeStatus_EstablishedJointSession //!< ジョイントセッションへ参加済み
202  };
203  //! @endcond
204 
205  /*!
206  @cond PRIVATE
207  @brief 接続状態を表す列挙型です。
208  */
209  enum ConnectionStatus
210  {
211  ConnectionStatus_NotConnected, //!< 通信していません。
212  ConnectionStatus_Connected, //!< 通信しています。
213  ConnectionStatus_DisconnectedSession, //!< セッションから切断されました。@ref LeaveSessionAsync でセッションから離脱した後、@ref Cleanup を呼び出す必要があります。
214  ConnectionStatus_DisconnectedNetwork, //!< ネットワークから切断されました。再度セッションに参加するためには、一度ログアウトしてから再度ログインする必要があります。
215  ConnectionStatus_DisconnectedNetworkByDuplicateLogin, //!< 他の端末からの同一アカウントでのログインによりゲームサーバーから切断されました。
216  ConnectionStatus_DisconnectedNetworkByWifiOff, //!< @if NIN_DOC ローカル通信中に機内モードが有効になり、ネットワークから切断されました。@endif
217  ConnectionStatus_DisconnectedNetworkBySleep //!< @if NIN_DOC ローカル通信中にスリープされ、ネットワークから切断されました。@endif
218  };
219  //! @endcond
220 
221  /*!
222  @cond PRIVATE
223  @brief 合流処理を表す列挙型です。
224  */
225  enum ProcessType
226  {
227  ProcessType_None = 0, //!< 処理を行っていない場合。(初期化用の値)
228  ProcessType_MergeSession, //!< 現セッション参加者全員を引き連れて別セッションへ合流する処理。合流先は指定する。
229  ProcessType_MergeRandomSession, //!< 現セッション参加者全員を引き連れて別セッションへ合流する処理。合流先はランダムマッチメイクで決定。
230  ProcessType_DemergeSession, //!< セッションを分割して新セッションへ独立する処理。
231  ProcessType_EmigrateSession, //!< 別セッションへ移住する処理。移住先は指定する。
232  ProcessType_EmigrateRandomSession, //!< 別セッションへ移住する処理。移住先はランダムマッチメイクで決定。
233  ProcessType_CreateJointSession, //!< ジョイントセッションを作成し、現セッション参加者全員を引き連れていく処理。
234  ProcessType_JoinJointSession, //!< ジョイントセッションを指定し、現セッション参加者全員を引き連れていく処理。
235  ProcessType_JoinRandomJointSession, //!< ランダムマッチメイクでジョイントセッションを指定し、現セッション参加者全員を引き連れていく処理。
236  ProcessType_DestroyJointSession, //!< ジョイントセッションを解散する処理。
237  ProcessType_LeaveJointSession, //!< ジョイントセッションから離脱する処理。
238  ProcessType_Max
239  };
240  /* @endcond */
241 
242  /*!
243  @cond PRIVATE
244  @brief メッシュ離脱系非同期処理の種類を区別するための列挙型。
245  */
246  enum LeaveMeshProcessType
247  {
248  LeaveMeshProcessType_Unknown = 0,
249  LeaveMeshProcessType_Leave,
250  LeaveMeshProcessType_LeaveWithHm,
251  LeaveMeshProcessType_Destroy
252  };
253  /* @endcond */
254 
255  /*!
256  @brief Sesssion が通信不可能な状態の場合に、通信不可能になった理由を表す列挙型です。
257 
258  @details @ref GetSessionDisconnectReason で取得可能です。
259  */
261  {
262  DisconnectReason_UnknownReason = 0, //!< 通信不可能になった理由が不明です。通信中に(破棄、離脱などを行わずに) Session::Cleanup を行った場合などにこの値となります。
263  DisconnectReason_NotYetCommunicated, //!< まだ通信したことがない場合です。 Session::Startup 後に一度もセッション構築、参加をしていない場合はこの値となります。
264  DisconnectReason_OperationOfOwn, //!< 自分自身の操作により通信不可能になった場合です。 Session::LeaveSessionAsync などを呼び出してセッション離脱した場合はこの値となります。
265  DisconnectReason_OperationOfOther, //!< セッション内の自分以外のステーションの操作により通信不可能になった場合です。自身がクライアントでホストがセッション破棄した場合などはこの値となります。
266  DisconnectReason_KickoutByUser, //!< Session::KickoutStation 呼出によりセッションから追放された場合です。
267  DisconnectReason_KickoutBySystem, //!< ライブラリ内部処理によってセッションから追放された場合です。リレー通信機能有効時のリレー依頼数制限などのライブラリ内部処理によってセッションから追放された場合はこの値となります。
268  DisconnectReason_InconsistentInfo, //!< セッション情報が不整合な状態になったので通信不可能になった場合です。ステーション数不一致などが原因の場合はこの値となります。
269  DisconnectReason_MigrationFail, //!< ホストマイグレーション処理に失敗したことにより通信不可能になった場合です。
270  DisconnectReason_ExternalFactor, //!< セッション以外の要因で通信不可能になった場合です。通信障害などが原因の場合はこの値となります。
271  DisconnectReason_MigrationFatalError //!< ホストマイグレーション関連で致命的なエラーが発生した場合です。セッションが分裂状態になったことをライブラリ内部処理によって検知した場合などに発生します。
272  };
273 
274  /*!
275  @brief セッションの状態を表す列挙型です。
276 
277  @details Session::GetStatus で取得可能です。
278  */
279  enum Status
280  {
281  Status_NotConnected, //!< 通信していません。
282  Status_ConnectedSession, //!< セッションへ参加済みです。
283  Status_MigratingSession, //!< ジョイントセッション機能によるセッション移行処理中です。(送受信不可期間有り)
284  Status_ConnectedJointSession, //!< ジョイントセッションへ参加済みです。
285  Status_DisconnectedSession, //!< セッションから切断されました。@ref LeaveSessionAsync を 呼んだ後 @ref Cleanup を呼び出す必要があります。
286  Status_DisconnectedNetwork, //!< ネットワークから切断されました。セッションに再度参加するためには、一度ログアウトしてから再度ログインする必要があります。
287  Status_DisconnectedNetworkByDuplicateLogin, //!< 他の端末からの同一アカウントでのログインによりゲームサーバーから切断されました。
288  Status_DisconnectedNetworkByWifiOff, //!< @if NIN_DOC ローカル通信中に機内モードが有効になり、ネットワークから切断されました。@endif
289  Status_DisconnectedNetworkBySleep //!< @if NIN_DOC ローカル通信中にスリープされ、ネットワークから切断されました。@endif
290  };
291 
292  /*!
293  @brief セッションの開閉状態を表す列挙型です。
294 
295  @details Session::GetSessionOpenStatus, Session::GetJointSessionOpenStatus で取得可能です。
296  */
298  {
299  SessionOpenStatus_Unknown, //!< 参加募集状態は不明(クライアントのみ)
300  SessionOpenStatus_Open, //!< 参加募集状態
301  SessionOpenStatus_Close //!< 参加締切状態
302  };
303 
304  /*!
305  @brief セッション状態変化通知コールバックで引数として渡される列挙型です。
306 
307  @details セッションに発生した状態変化の内容を表現します。
308  */
310  {
311  EventType_EventJoin = 0, //!< ステーションが参加したことを示します。
312  EventType_EventLeave, //!< ステーションが離脱したことを示します。
313  EventType_SessionHostChanged, //!< セッションのホスト権限が移譲されたことを示します。【ホストマイグレーション有効時のみ発生】
314  EventType_HostMigrationFailed, //!< ホストマイグレーションに失敗したことを示します。【ホストマイグレーション有効時のみ発生】
315  EventType_JointSessionHostChanged, //!< ジョイントセッションのホスト権限が移譲されたことを示します。【ジョイントセッション機能使用時、かつホストマイグレーション有効時のみ発生】
316  EventType_StartSessionCreateJoint = 11, //!< ジョイントセッションの構築処理を開始したことを示します。【ジョイントセッション機能使用時のみ発生】
317  EventType_EndSessionCreateJoint, //!< ジョイントセッションの構築処理が完了したことを示します。【ジョイントセッション機能使用時のみ発生】
318  EventType_StartSessionJoinJoint, //!< ジョイントセッションの参加処理を開始したことを示します。【ジョイントセッション機能使用時のみ発生】
319  EventType_EndSessionJoinJoint, //!< ジョイントセッションの参加処理が完了したことを示します。【ジョイントセッション機能使用時のみ発生】
320  EventType_StartSessionJointRandom, //!< ランダムマッチメイクによるジョイントセッション処理を開始したことを示します。【ジョイントセッション機能使用時のみ発生】
321  EventType_EndSessionJointRandom, //!< ランダムマッチメイクによるジョイントセッション処理が完了したことを示します。【ジョイントセッション機能使用時のみ発生】
322  EventType_StartSessionDestroyJoint, //!< ジョイントセッションの解散処理を開始したことを示します。【ジョイントセッション機能使用時のみ発生】
323  EventType_EndSessionDestroyJoint, //!< ジョイントセッションの解散処理が完了したことを示します。【ジョイントセッション機能使用時のみ発生】
324  EventType_StartSessionLeaveJoint, //!< ジョイントセッションの離脱処理を開始したことを示します。【ジョイントセッション機能使用時のみ発生】
325  EventType_EndSessionLeaveJoint, //!< ジョイントセッションの離脱処理が完了したことを示します。【ジョイントセッション機能使用時のみ発生】
326  EventType_SessionMigrationFailed, //!< ジョイントセッション機能によるセッション移行処理が失敗したことを示します。【ジョイントセッション機能使用時のみ発生】
327  EventType_SetSessionSystemPassword, //!< セッションのシステムパスワードが設定されました。
328  EventType_ClearSessionSystemPassword //!< セッションのシステムパスワードが解除されました。
329  };
330 
331  /*!
332  @brief セッションの状態が変化した場合に呼び出されるコールバックの関数型です。
333 
334  @details 【引数仕様】
335  <ul>
336  <li> eventType : 状態変化の内容を示す列挙型(@ref EventType 列挙型参照)</li>
337  <li> id : 状態変化が発生した対象の StationId</li>
338  <li> pApplicationParam : アプリケーションが登録したパラメータを示すポインタ </li>
339  </ul>
340 
341  */
342  typedef void (*SessionEventCallback)(EventType eventType, StationId id, void* pApplicationParam);
343 
344  /*!
345  @brief セッションホストとして参加要求を受け取った際に呼び出される承認/拒否判定コールバックの関数型です。
346 
347  @details 自分がセッションホストで、クライアントから参加要求を受け取った場合に呼び出されるコールバックです。
348  返り値により参加要求を承認するか、拒否するか決定できます。
349 
350  @param[in] pRequesterToken 参加要求の送信元ステーションの識別トークンを示すポインタです。
351 
352  @return 参加要求を承認する場合は true、参加要求を拒否する場合は false を返します。
353  */
354  typedef bool (*JoiningApprovalCallback)(const transport::Station::IdentificationToken* pRequesterToken);
355 
356 
357  typedef common::ObjList<StationId> TStationIdList;
358 
359  /*!
360  @brief セッション内で有効な StationId を参照するためのイテレータです(非 const 版)。
361  */
363  {
364  public:
365  StationIdIterator(TStationIdList::Iterator it)
366  : m_Iterator(it)
367  {
368  }
369  StationId& operator*(void)
370  {
371  return *m_Iterator;
372  }
373  StationId* operator->(void)
374  {
375  return &(*m_Iterator);
376  }
377  bool operator==(const StationIdIterator& rhs) const
378  {
379  return m_Iterator == rhs.m_Iterator;
380  }
381  bool operator!=(const StationIdIterator& rhs) const
382  {
383  return !(*this == rhs);
384  }
385  StationIdIterator& operator++(void)
386  {
387  ++m_Iterator;
388  return *this;
389  }
390 
391  private:
392  TStationIdList::Iterator m_Iterator;
393  };
394 
395  /*!
396  @brief セッションに参加している StationId を参照するためのイテレータです( const 版)。
397  */
399  {
400  public:
401  StationIdConstIterator(TStationIdList::ConstIterator it)
402  : m_ConstIterator(it)
403  {
404  }
405  StationId operator*(void)
406  {
407  return *m_ConstIterator;
408  }
409  const StationId* operator->(void)
410  {
411  return &(*m_ConstIterator);
412  }
413  bool operator==(const StationIdConstIterator& rhs) const
414  {
415  return m_ConstIterator == rhs.m_ConstIterator;
416  }
417  bool operator!=(const StationIdConstIterator& rhs) const
418  {
419  return !(*this == rhs);
420  }
421  StationIdConstIterator& operator++(void)
422  {
423  ++m_ConstIterator;
424  return *this;
425  }
426 
427  private:
428  TStationIdList::ConstIterator m_ConstIterator;
429  };
430 
431 
432  /*!
433  @name シングルトンインスタンスの操作
434  @{
435  */
436 
437  /*!
438  @brief Session クラスのインスタンスを作成します(シングルトンパターン)。
439 
440  @details デバッグ機能設定用関数 @ref SetDebugSetting でデバッグ用接続経路エミュレーション機能を使用する設定とした場合、
441  ネットワークトポロジー設定が NetworkTopology_RelayMesh でなければこの関数呼出が失敗します。
442 
443  @attention 製品版 ROM では、@ref SetDebugSetting を呼び出してはいけません。
444  @attention ローカル通信、Lan 通信時には Setting.networkTopology メンバに NetworkTopology_FullMesh 以外の値は指定できません。
445  @attention ローカル通信、Lan 通信時には Setting.browsedCommunityInfoListNum メンバには 0 を指定してください。
446 
447  @param[in] setting インスタンス作成時に設定するパラメータ
448 
449  @return インスタンスの作成に成功すれば、成功の Result が返されます。
450 
451  @retval nn::pia::ResultNotInitialized session モジュールが未初期化です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
452  @retval nn::pia::ResultInvalidState インスタンスを作成するタイミングが誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
453  @retval nn::pia::ResultAlreadyExists 既にインスタンスは作成されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
454  @retval nn::pia::ResultInvalidArgument 引数で設定したパラメータの内容や組み合わせに問題があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
455  */
456  static Result CreateInstance(const Setting& setting);
457 
458 
459  /*!
460  @brief Session クラスのインスタンスを破棄します(シングルトンパターン)。
461  */
462  static void DestroyInstance();
463 
464  /*!
465  @brief Session クラスのインスタンスを得ます(シングルトンパターン)。
466 
467  @details 事前に @ref CreateInstance によるインスタンス生成と初期化を済ませていない場合は、
468  NULLポインタが返されます。
469 
470  @return Session インスタンスへのポインタ。
471  */
473  {
474  return s_pInstance;
475  }
476 
477 
478  /*!
479  @brief (デバッグ用) Session のデバッグ用機能について設定します。
480 
481  @details 本関数は Session のインスタンスが存在しない状態で呼出可能です。 @ref CreateInstance で Session のインスタンスを作成する前に呼び出します。
482 
483  DebugSetting 構造体の isRelayEmulationEnabled を true に設定した場合、デバッグ用接続経路エミュレーション機能を使用する設定となります。
484  接続経路エミュレーション機能を使用する設定の場合、ネットワークトポロジーを NetworkTopology_RelayMesh に設定しない限り @ref CreateInstance が成功しません。
485 
486  DebugSetting 構造体の isMatchmakeAnalysisEnabled を true に設定した場合、マッチメイク分析機能を使用する設定となります。
487 
488  本関数を呼び出さなかった場合、本関数が関連するデバッグ用機能は全て無効(使用しない)設定となります。
489 
490  @attention 製品版 ROM では、本関数を呼び出してはいけません。
491 
492  @return 関数の実行結果を返します。処理が成功した場合、IsSuccess() が真となる Result を返します。この関数がエラーを返さないようにアプリケーションを実装する必要があります。<br>
493  処理が失敗した場合、以下の Result を返します。
494  @retval nn::pia::ResultInvalidState 関数が実行可能な状態ではありません。既に Session のインスタンスが作成済みの場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
495  */
496  static Result SetDebugSetting(const DebugSetting& debugSetting);
497 
498  /*!
499  end of name シングルトンインスタンスの操作
500  @}
501  */
502 
503 
504  /*!
505  @name 初期化終了処理
506  @{
507  */
508 
509  /*!
510  @brief スタートアップ処理を実行します。
511 
512  @details session::EndSetup() を呼び出して Session の初期化処理を終えた後で呼び出します。<br>
513 @if NIN_DOC
514  ローカル通信ではスタートアップ処理ごとに事前に nn::ldn::Initialize() も呼び出す必要があります。<br>
515 @endif
516  <br>
517  引数に指定する StartupSetting 構造体はマッチメイク種別毎にこの構造体を継承する以下の構造体を指定します。
518  <ul>
519  <li>インターネットマッチメイク時は inet::NexSessionStartupSetting 構造体を指定します。</li>
520 @if CTR_DOC
521  <li>ローカルマッチメイク時は local::LocalSessionStartupSetting 構造体を指定します。</li>
522 @endif
523 @if NIN_DOC
524  <li>ローカルマッチメイク時は local::LocalSessionStartupSetting 構造体を指定します。</li>
525 @endif
526  <li>LAN マッチメイク時は lan::LanSessionStartupSetting 構造体を指定します。</li>
527  </ul>
528  マッチメイク種別に依らず、共通して設定できる項目は以下になります。
529  <ul>
530  <li>maxSilenceTime で、許容される最大無通信時間を設定できます。ステーションとの無通信時間が設定時間を超えると、そのステーションと切断したと判断されます。デフォルト値はネットワーク種別毎に異なります。</li>
531  <li>keepAliveSendingInterval で、キープアライブの送信間隔を設定できます。キープアライブとは、アプリ側で送信処理を行っていない相手にシステム側で送信を行い無通信状態と判断されないようにする機能のことです。デフォルト値はネットワーク種別毎に異なります。</li>
532  <li>pToken で、自分自身を示す識別トークンを設定することができます。デフォルト値は NULL です。</li>
533  </ul>
534  インターネットマッチメイク時は以下の項目を設定できます。
535  <ul>
536  <li>mtuSize で、パケットの MTU を設定できます。@ref inet::MtuSizeMin から @ref inet::MtuSizeMax までの値を指定します。デフォルト値は inet::DefaultMtuSize です。</li>
537  <li>isHostMigrationEnabled で、ホストマイグレーション機能の設定を行います。true にすると有効になります。デフォルト値は true です。</li>
538  <li>isBitRateCheckSkipped で、ビットレート判定機能を利用する際に、判定に関わる処理をスキップするかどうかを設定します。スキップする場合には true を設定します。デフォルトは false です。</li>
539  <li>uplinkBitRateLowerLimit で、ビットレート判定機能を使用する際に、アプリケーションが要求する水準を指定します。単位は bps です。デフォルトは session::SessionInvalidUplinkBitRateLowerLimit ですので、判定機能を使用する際は必ず設定する必要があります。</li>
540  <li>bitRateMeasuringSpan で、ビットレート判定機能を利用する際に、計測にかける時間を設定します。単位は msec です。デフォルトは 1000 msec です。デフォルト値からの変更はお勧めしません。</li>
541  <li>bitRateCheckPacketSize で、ビットレート判定機能を利用する際に、判定に用いる IP パケットサイズを指定します。単位はバイトです。アプリケーションが送受信する IP パケットの平均的なサイズを指定することを想定しています。4 の倍数でなくてはなりません。デフォルトは 0 ですので、判定機能を使用する際は必ず設定する必要があります。</li>
542  <li>cryptoMode で、暗号化設定モードを指定します。デフォルトは common::CryptoSetting::Mode_Aes128 です。</li>
543  <li>isAddRecentPlayRecordEnabled で、セッション参加者を「いっしょにあそんだ人の記録」に追加するかどうかを指定します。デフォルトは true(有効)になっています。本体機能が「いっしょにあそんだ人の記録」に対応していない場合は無視されます。</li>
544  <li>playerInfo で、自分自身のステーションと関連付けるプレイヤー情報を設定します。MaxPlayerInfoSize まで指定可能です。</li>
545  <li>isPlayersCountedAsParticipants で、自分自身のステーションに複数のプレイヤーを関連付ける際、プレイヤー数をセッション参加者数としてカウントするか指定します。デフォルトは true です。</li>
546  </ul>
547 @if CTR_DOC
548  ローカルマッチメイク時は以下の項目を設定できます。
549  <ul>
550  <li>playerInfo で、自分自身のステーションと関連付けるプレイヤー情報を設定します。</li>
551  <li>signatureKeyData で、パケットに署名を付与する際の署名鍵を設定します。</li>
552  <li>signatureKeyDataSize で、パケットに署名を付与する際に使用する署名鍵のサイズを設定します。署名を無効にする場合は 0 を指定します。@ref common::SignatureSetting::SignatureKeyDataSizeMax 以下である必要があります。</li>
553  <li>isAddRecentPlayRecordEnabled で、セッション参加者を「いっしょにあそんだ人の記録」に追加するかどうかを指定します。デフォルトは true(有効)になっています。本体機能が「いっしょにあそんだ人の記録」に対応していない場合は無視されます。</li>
554  </ul>
555 @endif
556 @if NIN_DOC
557  ローカルマッチメイク時は以下の項目を設定できます。
558  <ul>
559  <li>playerInfo で、自分自身のステーションと関連付けるプレイヤー情報を設定します。</li>
560  <li>signatureKeyData で、パケットに署名を付与する際の署名鍵を設定します。</li>
561  <li>signatureKeyDataSize で、パケットに署名を付与する際に使用する署名鍵のサイズを設定します。署名を無効にする場合は 0 を指定します。@ref common::SignatureSetting::SignatureKeyDataSizeMax 以下である必要があります。</li>
562  <li>isAddRecentPlayRecordEnabled で、セッション参加者を「いっしょにあそんだ人の記録」に追加するかどうかを指定します。デフォルトは true(有効)になっています。本体機能が「いっしょにあそんだ人の記録」に対応していない場合は無視されます。</li>
563  </ul>
564 @endif
565  LAN マッチメイク時は以下の項目を設定できます。
566  <ul>
567  <li>cryptoMode で、暗号化設定モードを指定します。デフォルトは common::CryptoSetting::Mode_Aes128 です。</li>
568  <li>playerInfo で、自分自身のステーションと関連付けるプレイヤー情報を設定します。MaxPlayerInfoSize まで指定可能です。</li>
569  <li>isPlayersCountedAsParticipants で、自分自身のステーションに複数のプレイヤーを関連付ける際、プレイヤー数をセッション参加者数としてカウントするか指定します。デフォルトは true です。</li>
570  </ul>
571  <br>
572  maxSilenceTime, keepAliveSendingInterval, mtuSize に関して独自の値を設定する場合、実際の動作を確認しながら調整する必要があります。<br>
573  識別トークンは接続処理時に接続相手と共有され、@ref transport::Station と結び付けられて保管されます。
574  識別トークンを使用する必要が無い場合は、特に設定を行う必要はありません。
575  @ref Startup 以外で、自分自身を示す識別トークンを指定、変更する方法はありません。セッション使用中に識別トークンを変更できません。<br>
576 @if CAFE_DOC
577  プレイヤーの名前の長さは20文字(NULL終端を含めない)以内である必要があります。文字コードは UTF-16BE である必要があります。
578  言語コードはアプリケーションが使用している言語を、 nn::fp::Language で定義される値で指定します。
579  設定したプレイヤー情報はセッション参加者間で共有されます。<br>
580  isAddRecentPlayRecordEnabled に true を指定した場合、自分がセッションに参加したときにはセッションの参加者全員を、他のクライアントが
581  セッションに参加したときにはその新規参加者のプレイヤー情報を参照し、ライブラリ内で自動的に nn::fp::AddRecentPlayRecord() を使用して
582  「いっしょにあそんだ人の記録」に追加します。 <br>
583  「いっしょにあそんだ人の記録」についての詳細はフレンドプレゼンスライブラリのプログラミングマニュアルおよび nn::fp::AddRecentPlayRecord() の
584  リファレンスを参照してください。
585 @endif
586 @if CTR_DOC
587  プレイヤーの名前の長さは20文字(NULL終端を含めない)以内である必要があります。文字コードは UTF-16LE である必要があります。
588  言語コードはアプリケーションで別リージョンの言語を判定する場合に指定します。本体の言語設定を使用したい場合には、nn::cfg::CTR::GetLanguage() の値を使用可能です。
589  設定したプレイヤー情報はセッション参加者間で共有されます。<br>
590  ローカルマッチメイク時は SDK の UDS 通信層で暗号化されるため、暗号化を設定することはできません。
591 @endif
592 @if NIN_DOC
593  プレイヤーの名前の長さは20文字(NULL終端を含めない)以内である必要があります。文字コードは UTF-8 である必要があります。
594  言語コードはアプリケーションが使用している言語を、nn::settings::Language で定義される値で指定します。
595  プレイヤー ID にはアカウントシステムに登録されたユーザーの識別子を指定します。ここでの指定を省略したプレイヤーはゲストプレイヤーとして扱われます。
596  設定したプレイヤー情報はセッション参加者間で共有されます。<br>
597  同じステーションから複数のプレイヤーを参加させる場合は人数分のプレイヤー情報を設定します。
598  その際は isPlayersCountedAsParticipant で指定した人数がマッチメイクセッションの参加者としてカウントさせるかも指定します。<br>
599  isAddRecentPlayRecordEnabled に true を指定した場合、自分がセッションに参加したときにはセッションの参加者全員を、他のクライアントが
600  セッションに参加したときにはその新規参加者のプレイヤー情報を参照し、ライブラリ内で自動的に「いっしょにあそんだ人の記録」に追加します。
601  ただし、ゲストプレイヤーの情報は「いっしょにあそんだ人の記録」には追加されません。<br>
602  「いっしょにあそんだ人の記録」についての詳細は NintendoSDK ドキュメントの FRIENDS ライブラリの機能、アカウントガイド、本体機能ガイドを参照してください。<br>
603  ローカルマッチメイク時は SDK の LDN 通信層で暗号化されるため、暗号化を設定することはできません。<br>
604 @endif
605 @if CTR_DOC
606  @attention ローカル通信時には、本関数呼び出し中はスリープモードに遷移してはいけません。
607 @endif
608  @param[in] startupSetting スタートアップ時の各種設定項目(マッチメイク種別毎に継承している構造体を指定します)
609 
610  @return 処理に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
611 
612  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
613  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。ローカル通信時にのみ返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
614 @if NIN_DOC
615  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
616  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
617 @endif
618  @see Cleanup
619  */
620  Result Startup(const StartupSetting& startupSetting);
621 
622 
623  /*!
624  @brief クリーンアップ処理を実行します。
625  @details セッション終了後やエラー発生後に呼び出し、再度 Session の処理を行える状態にします。
626 @if NIN_DOC
627  <br/>ローカル通信ではクリーンアップ処理ごとに、この関数呼び出し後、 nn::ldn::Finalize() も呼び出す必要があります。<br>
628 @endif
629  @ref CheckConnectionError が @ref ResultSessionConnectionIsLost を返した場合は、
630  本関数を呼び出す前に @ref LeaveSessionAsync を呼び出します。
631 
632  @ref Cleanup 後に再度 Session を使用する場合には、 Startup を呼び出す必要があります。<br>
633 
634  @see Startup
635  */
636  void Cleanup();
637 
638  /*!
639  end of name 初期化終了処理
640  @}
641  */
642 
643  /*!
644  @name セッションの操作
645  @{
646  */
647 
648  /*!
649  @brief セッション API の非同期処理が行われているかを取得します。
650  @return 非同期処理が行われている場合は true, 非同期処理が行われていない場合は false が返ります。
651  */
652  bool IsAsyncProcessInProgress() const;
653 
654  /*!
655  @brief ランダムマッチメイクを行いセッションの構築/参加を行います。
656  @details <br/>
657  この関数はローカル通信では使用できません。

658  ランダムマッチメイクを行った後、セッションの構築/参加を行う非同期処理を開始します。開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
659  処理の完了は @ref IsJoinRandomSessionCompleted でチェックし、結果は @ref GetJoinRandomSessionResult で確認できます。
660  非同期処理が成功していた場合は、@ref GetSessionInfo でセッション情報を取得できますが、非同期処理中にセッションホストが @ref UpdateSessionSettingAsync でセッション情報を更新した場合、
661  取得する情報が更新前の情報となる場合があります。
662 
663  JoinRandomSessionSetting に設定する検索条件はインターネット通信時のみ複数指定でき、最大で @ref inet::SearchCriteriaListSizeMax まで指定できます。
664  複数の検索条件を指定した場合は、リストに最初に指定された条件から順に検索を行い、参加できた段階で打ち切ります。
665  検索条件として指定できる数より多くの条件を設定すると nn::pia::ResultInvalidArgument が返ります。
666  参加が締め切られているセッション、既に満員のセッションは自動的に検索対象外となります。
667  また、過去 3 回にわたってクライアントとして参加したセッションは、サーバー側で記録され、参加対象から外れるようになっています。この参加記録は約 1 時間で無効になります。
668 
669  @param[in] pJoinRandomSessionSetting ランダムマッチメイクの設定
670 
671  @return 非同期処理の開始に成功すれば、成功の Result が返されます。
672 
673  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
674  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。ローカル通信では対応していません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
675  インターネット通信時は他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
676 
677  @see IsJoinRandomSessionCompleted, GetJoinRandomSessionResult
678  */
679  Result JoinRandomSessionAsync(const JoinRandomSessionSetting* pJoinRandomSessionSetting);
680 
681  /*!
682  @brief JoinRandomSessionAsync の非同期処理の完了をチェックします。
683  @details この関数はローカル通信では使用できません。

684  @ref JoinRandomSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
685  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
686 
687  @see JoinRandomSessionAsync, GetJoinRandomSessionResult
688  */
689  bool IsJoinRandomSessionCompleted() const;
690 
691  /*!
692  @brief JoinRandomSessionAsync の非同期処理の結果を取得します。
693  @details この関数はローカル通信では使用できません。

694  @ref JoinRandomSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
695 
696  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
697 
698  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
699  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
700  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
701  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
702  @retval nn::pia::ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
703  @retval nn::pia::ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
704  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。クリーンアップ処理を実行してください。
705  @retval nn::pia::ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
706  @retval nn::pia::ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
707  @retval nn::pia::ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
708  @retval nn::pia::ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
709  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
710  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
711  @retval nn::pia::ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
712  @retval nn::pia::ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
713  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
714  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
715  @retval nn::pia::ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
716  @retval nn::pia::ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
717  @retval nn::pia::ResultJoinRequestDenied セッションホストに接続を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
718  @retval nn::pia::ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
719  @retval nn::pia::ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
720  @retval nn::pia::ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
721  @retval nn::pia::ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
722  @retval nn::pia::ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
723  @retval nn::pia::ResultInvalidSystemMessage セッションホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
724  @retval nn::pia::ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
725  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
726  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
727  @retval nn::pia::ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
728  @if NIN_DOC
729  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
730  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
731  @endif
732  @retval nn::pia::ResultLanLowerVersion アプリケーションの通信バージョンが参加を行おうとしたセッションのものよりも低いです。LAN マッチメイク時にのみ返ります。クリーンアップ処理を実行してください。
733  @retval nn::pia::ResultLanHigherVersion アプリケーションの通信バージョンが参加を行おうとしたセッションのものよりも高いです。LAN マッチメイク時にのみ返ります。クリーンアップ処理を実行してください。
734 
735  @see JoinRandomSessionAsync, IsJoinRandomSessionCompleted
736  */
738 
739  /*!
740  @brief JoinRandomSessionAsync の非同期処理でセッション参加時のスコアを取得します。
741  @details インターネット通信時のみ有効です。
742  スコアベースマッチメイク指定で @ref JoinRandomSessionAsync の非同期処理が完了した後、本関数でスコアを取得できます。
743  ただし、自分がセッションホストの場合はスコアは取得できません。
744 
745  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
746 
747  @retval nn::pia::ResultInvalidArgument 引数で指定されたポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
748  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、開始されていない場合、スコアベースマッチメイクを指定していない、自分がセッションホストであるなど、スコアが取得できない状態の場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
749  */
750  Result GetJoinRandomSessionScore(uint32_t* pScore) const;
751 
752  /*!
753  @brief JoinRandomSessionAsync の非同期処理をキャンセルします。
754 
755  @details JoinRandomSessionAsync で開始された非同期処理は、本関数でキャンセルできます。
756  キャンセル処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
757  本関数を呼び出した後、ライブラリは速やかに非同期処理のキャンセルを行いますが、
758  キャンセルの完了は @ref IsJoinRandomSessionCompleted() でチェックします。
759 
760  @return JoinRandomSessionAsync の非同期処理のキャンセル結果を返します。処理が成功していた場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
761  @retval ResultInvalidState JoinRandomSessionAsync の非同期処理が行われていないタイミングで呼び出しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
762 
763  @see JoinRandomSessionAsync, IsJoinRandomSessionCompleted, GetJoinRandomSessionResult
764  */
766 
767  /*!
768  @brief セッションの検索を行います。
769  @details
770  <br>
771  セッション検索を行う非同期処理を開始します。
772  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
773  処理の完了は @ref IsBrowseSessionCompleted でチェックし、結果は @ref GetBrowseSessionResult で確認できます。
774  検索処理が成功した場合、検索できたセッションのリストが更新され、@ref GetBrowsedSessionInfoList で取得できます。
775 
776  @param[in] pSearchCriteria セッション検索時の条件
777 
778  @return 非同期処理の開始に成功すれば、成功のResultが返されます。
779 
780  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
781  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
782 
783  @see IsBrowseSessionCompleted, GetBrowseSessionResult, GetBrowsedSessionInfoList
784  */
785  Result BrowseSessionAsync(const SessionSearchCriteria* pSearchCriteria);
786 
787  /*!
788  @brief BrowseSessionAsync の非同期処理の完了をチェックします。
789  @details @ref BrowseSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
790 
791  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
792 
793  @see BrowseSessionAsync, GetBrowseSessionResult, GetBrowsedSessionInfoList
794  */
795  bool IsBrowseSessionCompleted() const;
796 
797  /*!
798  @brief BrowseSessionAsync の非同期処理の結果を取得します。
799  @details @ref BrowseSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
800 
801  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
802 
803  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
804  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
805  @retval nn::pia::ResultCancelled 実行中の非同期処理をキャンセルしました。クリーンアップ処理を実行してください。
806  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
807  @if NIN_DOC
808  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。インターネットマッチメイク時や LAN マッチメイク時には、無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
809  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
810  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
811  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
812  @else
813  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
814  @endif
815  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
816  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
817  @ifnot CAFE_DOC
818  @retval nn::pia::ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
819  @endif
820 
821  @see BrowseSessionAsync, IsBrowseSessionCompleted, GetBrowsedSessionInfoList
822  */
824 
825  /*!
826  @brief BrowseSessionAsync の非同期処理で検索できたセッションのリストを取得します。
827  @details @ref BrowseSessionAsync で開始された非同期処理が完了し、@ref GetBrowseSessionResult が成功した後、本関数でセッションリストを取得できます。
828 
829  @return 検索できたセッションのリストのポインタを返します。
830 
831  @see BrowseSessionAsync, IsBrowseSessionCompleted, GetBrowseSessionResult
832  */
834 
835  /*!
836  @brief セッションの構築を行います。
837  @details
838  <br>
839  セッション構築を行う非同期処理を開始します。
840  構築したセッションのホストになります。
841  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
842  処理の完了は @ref IsCreateSessionCompleted でチェックし、結果は @ref GetCreateSessionResult で確認できます。
843  また、非同期処理が成功していた場合は、@ref GetSessionInfo でセッションの情報を取得できます。
844 
845  @param[in] pCreateSessionSetting セッションを作成する際の条件
846 
847  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
848 
849  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
850  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
851 
852  @see IsCreateSessionCompleted, GetCreateSessionResult
853  */
854  Result CreateSessionAsync(const CreateSessionSetting* pCreateSessionSetting);
855 
856  /*!
857  @brief CreateSessionAsync の非同期処理の完了をチェックします。
858  @details @ref CreateSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
859 
860  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
861 
862  @see CreateSessionAsync, GetCreateSessionResult
863  */
864  bool IsCreateSessionCompleted() const;
865 
866  /*!
867  @brief CreateSessionAsync の非同期処理の結果を取得します。
868  @details @ref CreateSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
869 
870  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
871 
872  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
873  @retval nn::pia::ResultInvalidState 非同期処理を進行できない内部状態になりました。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
874  @if NIN_DOC
875  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。インターネットマッチメイク時や LAN マッチメイク時には、無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
876  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
877  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
878  @else
879  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
880  @endif
881  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
882  @retval nn::pia::ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
883  @retval nn::pia::ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
884  @retval nn::pia::ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
885  @retval nn::pia::ResultTimeOut タイムアウトで終了しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
886  @retval nn::pia::ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
887  @if NIN_DOC
888  @retval nn::pia::ResultWirelessControllerCountLimitation 無線コントローラの接続台数が制限を超えています。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
889  @endif
890  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
891  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
892  @retval nn::pia::ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
893  @if NIN_DOC
894  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
895  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
896  @endif
897 
898  @see CreateSessionAsync, IsCreateSessionCompleted
899  */
901 
902  // セッション参加
903  /*!
904  @brief セッションへの参加を行います。
905  @details
906  <br>
907  セッション参加を行う非同期処理を開始します。
908 
909  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
910  処理の完了は @ref IsJoinSessionCompleted でチェックし、結果は @ref GetJoinSessionResult で確認できます。
911  非同期処理が成功していた場合は、@ref GetSessionInfo でセッション情報を取得できますが、非同期処理中にセッションホストが @ref UpdateSessionSettingAsync でセッション情報を更新した場合、
912  取得する情報が更新前の情報となる場合があります。
913 
914  @param pJoinSessionSetting 参加するセッションの条件
915 
916  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
917 
918  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
919  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
920 
921  @see IsJoinSessionCompleted, GetJoinSessionResult
922  */
923  Result JoinSessionAsync(const JoinSessionSetting* pJoinSessionSetting);
924 
925  /*!
926  @brief JoinSessionAsync の非同期処理の完了をチェックします。
927  @details @ref JoinSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
928 
929  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
930 
931  @see JoinSessionAsync, GetJoinSessionResult
932  */
933  bool IsJoinSessionCompleted() const;
934 
935  /*!
936  @brief JoinSessionAsync の非同期処理の結果を取得します。
937  @details @ref JoinSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
938 
939  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
940 
941  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
942  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
943  @if NIN_DOC
944  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。インターネットマッチメイク時や LAN マッチメイク時には、無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
945  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
946  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
947  @else
948  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
949  @endif
950  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。クリーンアップ処理を実行してください。
951  @retval nn::pia::ResultMatchmakeSessionIsFull マッチメイクセッションが満員でした。クリーンアップ処理を実行してください。
952  @retval nn::pia::ResultDeniedByParticipants セッション参加者が自分をブラックリストに登録しています。クリーンアップ処理を実行してください。
953  @retval nn::pia::ResultParticipantInBlockList セッションに自分がブロックリストに登録している参加者がいました。クリーンアップ処理を実行してください。
954  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
955  @retval nn::pia::ResultNatCheckFailed NAT チェックに失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
956  @retval nn::pia::ResultDnsFailed DNS 解決に失敗しています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
957  @retval nn::pia::ResultCancelled 非同期処理がキャンセルされました。クリーンアップ処理を実行してください。
958  @retval nn::pia::ResultInvalidState 接続可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
959  @retval nn::pia::ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
960  @retval nn::pia::ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
961  @retval nn::pia::ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
962  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
963  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
964  @retval nn::pia::ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
965  @retval nn::pia::ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
966  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
967  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
968  @retval nn::pia::ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
969  @retval nn::pia::ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
970  @retval nn::pia::ResultJoinRequestDenied セッションホストに接続を拒否されました。 @cond NIN_DOC ローカルマッチメイク時には、参加しようとしたネットワークが満員だった場合にも返ります。 @endcond クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
971  @retval nn::pia::ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
972  @retval nn::pia::ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
973  @retval nn::pia::ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
974  @retval nn::pia::ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
975  @retval nn::pia::ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
976  @retval nn::pia::ResultInvalidSystemMessage セッションホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
977  @retval nn::pia::ResultSessionUserPasswordUnmatch 参加時に指定したユーザーパスワードがセッションに設定されたユーザーパスワードと一致しませんでした。クリーンアップ処理を実行してください。
978  @retval nn::pia::ResultSessionSystemPasswordUnmatch 参加時に指定したシステムパスワードがセッションに設定されたシステムパスワードと一致しませんでした。クリーンアップ処理を実行してください。
979  @retval nn::pia::ResultSessionIsClosed 参加を行おうとしたセッションが締め切られていました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
980  @retval nn::pia::ResultHostIsNotFriend 参加を行おうとしたセッションのホストがフレンドではありませんでした。クリーンアップ処理を実行してください。
981  @retval nn::pia::ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
982  @retval nn::pia::ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
983  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
984  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
985  @retval nn::pia::ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
986  @if CTR_DOC
987  @retval nn::pia::ResultNetworkIsFull ネットワークが満員でした。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
988  @retval nn::pia::ResultTimeOut タイムアウトで終了しました。 local::UdsJoinSessionSetting で設定した暗号鍵が誤っている場合にも返ります。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
989  @retval nn::pia::ResultLocalLowerVersion 自分の local::LocalNetworkVersion 、または、アプリケーションバージョンが参加を行おうとしたセッションのものよりも低いです。ローカル通信時にのみ返ります。エラー・EULA アプレットでエラーコード付きのエラー表示は行なわず、アプリケーションで独自のメッセージを表示してください。クリーンアップ処理を実行してください。
990  @retval nn::pia::ResultLocalHigherVersion 自分の local::LocalNetworkVersion 、または、アプリケーションバージョンが参加を行おうとしたセッションのものよりも高いです。ローカル通信時にのみ返ります。エラー・EULA アプレットでエラーコード付きのエラー表示は行なわず、アプリケーションで独自のメッセージを表示してください。クリーンアップ処理を実行してください。
991  @elseif CAFE_DOC
992  @retval nn::pia::ResultTimeOut タイムアウトで終了しました。 クリーンアップ処理を実行してください。
993  @elseif NIN_DOC
994  @retval nn::pia::ResultTimeOut タイムアウトで終了しました。ローカルマッチメイク時には、パスワードが一致しなかった場合にも返ります。クリーンアップ処理を実行してください。
995  @retval nn::pia::ResultLocalLowerVersion 自分の local::LocalNetworkVersion 、または、ローカル通信バージョンが参加を行おうとしたセッションのものよりも低いです。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
996  @retval nn::pia::ResultLocalHigherVersion 自分の local::LocalNetworkVersion 、または、ローカル通信バージョンが参加を行おうとしたセッションのものよりも高いです。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
997  @retval nn::pia::ResultWirelessControllerCountLimitation 無線コントローラの接続台数が制限を超えています。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
998  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
999  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1000  @endif
1001  @retval nn::pia::ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
1002  @retval nn::pia::ResultLanLowerVersion アプリケーションの通信バージョンが参加を行おうとしたセッションのものよりも低いです。LAN マッチメイク時にのみ返ります。クリーンアップ処理を実行してください。
1003  @retval nn::pia::ResultLanHigherVersion アプリケーションの通信バージョンが参加を行おうとしたセッションのものよりも高いです。LAN マッチメイク時にのみ返ります。クリーンアップ処理を実行してください。
1004 
1005  @see JoinSessionAsync, IsJoinSessionCompleted
1006  */
1007  Result GetJoinSessionResult() const;
1008 
1009  /*!
1010  @brief JoinSessionAsync の非同期処理をキャンセルします。
1011 
1012  @details JoinSessionAsync で開始された非同期処理は、本関数でキャンセルできます。
1013  キャンセル処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1014  本関数を呼び出した後、ライブラリは速やかに非同期処理のキャンセルを行いますが、
1015  キャンセルの完了は @ref IsJoinSessionCompleted() でチェックします。
1016 
1017  @return JoinSessionAsync の非同期処理のキャンセル結果を返します。処理が成功していた場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1018  @retval ResultInvalidState JoinSessionAsync の非同期処理が行われていないタイミングで呼び出しています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1019 
1020  @see JoinSessionAsync, IsJoinSessionCompleted, GetJoinSessionResult
1021  */
1023 
1024  /*!
1025  @brief セッションからの離脱を行います。
1026  @details
1027  <br>
1028  セッション離脱を行う非同期処理を開始します。
1029  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1030  処理の完了は @ref IsLeaveSessionCompleted でチェックし、結果は @ref GetLeaveSessionResult で確認できます。
1031 
1032  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1033 
1034  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1035 
1036  @see IsLeaveSessionCompleted, GetLeaveSessionResult
1037  */
1039 
1040  /*!
1041  @brief LeaveSessionAsync の非同期処理の完了をチェックします。
1042  @details @ref LeaveSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
1043 
1044  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1045 
1046  @see LeaveSessionAsync, GetLeaveSessionResult
1047  */
1048  bool IsLeaveSessionCompleted() const;
1049 
1050  /*!
1051  @brief LeaveSessionAsync の非同期処理の結果を取得します。
1052  @details @ref LeaveSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1053 
1054  @return IsSuccess() が真となる Result を返します。
1055 
1056  @retval nn::pia::ResultInvalidState 処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1057 
1058  @see LeaveSessionAsync, IsLeaveSessionCompleted
1059  */
1060  Result GetLeaveSessionResult() const;
1061 
1062  // セッション参加受付開始
1063  /*!
1064  @brief セッションの参加受付を開始します。
1065  @details
1066  <br>
1067  セッション参加受付を開始する非同期処理を開始します。
1068  セッションホストであるときに実行できます。
1069  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1070  処理の完了は @ref IsOpenSessionCompleted でチェックし、結果は @ref GetOpenSessionResult で確認できます。<br>
1071  UpdateSessionSetting の派生クラスのインスタンスを引数に指定する場合、参加受付の開始と同時にセッションの設定を更新します。
1072 
1073  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1074 
1075  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1076  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、セッション参加状態であること、セッションホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1077 
1078  @see IsOpenSessionCompleted, GetOpenSessionResult, IsHost
1079  */
1080  Result OpenSessionAsync(const UpdateSessionSetting* pUpdateSessionSetting = NULL);
1081 
1082  /*!
1083  @brief OpenSessionAsync の非同期処理の完了をチェックします。
1084  @details @ref OpenSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
1085 
1086  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1087 
1088  @see OpenSessionAsync, GetOpenSessionResult
1089  */
1090  bool IsOpenSessionCompleted() const;
1091 
1092  /*!
1093  @brief OpenSessionAsync の非同期処理の結果を取得します。
1094  @details @ref OpenSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1095 
1096  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1097 
1098  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1099  @if NIN_DOC
1100  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。インターネットマッチメイク時や LAN マッチメイク時には、無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1101  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1102  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1103  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1104  @else
1105  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1106  @endif
1107  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
1108  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
1109  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1110  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1111  @retval nn::pia::ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
1112 
1113  @see OpenSessionAsync, IsOpenSessionCompleted
1114  */
1115  Result GetOpenSessionResult() const;
1116 
1117  // セッション参加締め切り
1118  /*!
1119  @brief セッションの参加締切を行います。
1120  @details
1121  <br>
1122  セッション参加を締め切る非同期処理を開始します。
1123  セッションホストであるときに実行できます。
1124  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1125  処理の完了は @ref IsCloseSessionCompleted でチェックし、結果は @ref GetCloseSessionResult で確認できます。
1126  <br>
1127  本関数の呼び出し直前にセッションに新規参加しようとしているステーションが非同期処理完了後に参加してくる可能性があるため、
1128  セッション参加締切後、マッチメイクセッションとメッシュの参加者数が一致するまで待ってから非同期処理を完了します。
1129  また、一定期間(15秒)経過しても一致しない場合も非同期処理を完了します。この場合、@ref GetCloseSessionResult は
1130  ResultNegligibleFault を返します。非同期処理完了後に新規参加してくる可能性がありますので、アプリケーションで適切にハンドリング
1131  する必要があります。
1132 
1133 
1134  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1135 
1136  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、セッション参加状態であること、セッションホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1137 
1138  @see IsCloseSessionCompleted, GetCloseSessionResult, IsHost
1139  */
1141 
1142  /*!
1143  @brief CloseSessionAsync の非同期処理の完了をチェックします。
1144  @details @ref CloseSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
1145 
1146  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1147 
1148  @see CloseSessionAsync, GetCloseSessionResult
1149  */
1150  bool IsCloseSessionCompleted() const;
1151 
1152  /*!
1153  @brief CloseSessionAsync の非同期処理の結果を取得します。
1154  @details @ref CloseSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1155 
1156  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1157 
1158  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1159  @if NIN_DOC
1160  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。インターネットマッチメイク時や LAN マッチメイク時には、無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1161  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1162  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1163  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1164  @else
1165  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1166  @endif
1167  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
1168  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
1169  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1170  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1171  @retval nn::pia::ResultNegligibleFault マッチメイクセッションとメッシュの参加人数が一致しない状態で一定時間経過しました。アプリケーションで適切にハンドリングしてください。
1172  @retval nn::pia::ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
1173 
1174  @see CloseSessionAsync, IsCloseSessionCompleted
1175  */
1176  Result GetCloseSessionResult() const;
1177 
1178  // セッション用システムパスワード生成
1179  /*!
1180  @brief サーバー側でシステムパスワードを生成し、セッションにそのパスワードを設定します。
1181  @details <br/>
1182  この関数はローカル通信では使用できません。

1183  非同期にサーバー側でシステムパスワードを生成し、セッションにそのパスワードを設定します。
1184  非同期処理完了時に引数で渡した pSystemPassword に設定されたパスワードが保存されます。
1185  クライアントでは Session::EventType_SetSessionSystemPassword で通知され、設定されたパスワードは @ref GetSessionSystemPassword で取得できます。
1186  セッションホストであるときに実行できます。
1187  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1188  処理の完了は @ref IsGenerateSessionSystemPasswordCompleted でチェックし、結果は @ref GetGenerateSessionSystemPasswordResult で確認できます。
1189 
1190  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1191 
1192  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。ローカル通信では対応していません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1193  インターネット通信時は他の非同期処理が行われていないこと、Startup が呼び出されていること、ホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1194 
1195  @see IsGenerateSessionSystemPasswordCompleted, GetGenerateSessionSystemPasswordResult, GetSessionSystemPassword, IsHost
1196  */
1198 
1199  /*!
1200  @brief GenerateSessionSystemPasswordAsync の非同期処理の完了をチェックします。
1201  @details この関数はローカル通信では使用できません。

1202  @ref GenerateSessionSystemPasswordAsync で開始された非同期処理は、本関数で完了をチェックできます。
1203 
1204  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1205 
1206  @see GenerateSessionSystemPasswordAsync, GetGenerateSessionSystemPasswordResult
1207  */
1209 
1210  /*!
1211  @brief GenerateSessionSystemPasswordAsync の非同期処理の結果を取得します。
1212  @details <br/>
1213  この関数はローカル通信では使用できません。

1214  @ref GenerateSessionSystemPasswordAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1215 
1216  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1217 
1218  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1219  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1220  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
1221  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
1222  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1223  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1224  @if NIN_DOC
1225  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1226  @endif
1227 
1228  @see GenerateSessionSystemPasswordAsync, IsGenerateSessionSystemPasswordCompleted
1229  */
1231 
1232  //! @cond PRIVATE
1233  Result SetSessionSystemPassword(const common::String& pSystemPassword);
1234  void ResetSessionSystemPassword();
1235  //! @endcond
1236  /*!
1237  @brief GenerateSessionSystemPasswordAsync でセッションに設定されたシステムパスワードを取得します。
1238  @details
1239  <br>
1240  この関数はローカル通信では使用できません。

1241  GenerateSessionSystemPasswordAsync でセッションに設定されたシステムパスワードを取得します。
1242  登録されたイベントコールバックに通知された Session::EventType_SetSessionSystemPassword の後、
1243  セッションに設定されたシステムパスワードを取得できます。
1244 
1245  @return 設定されたシステムパスワード
1246 
1247  @see GenerateSessionSystemPasswordAsync
1248  */
1250 
1251  /*!
1252  @brief セッションに設定されたシステムパスワードを解除します。
1253  @details この関数はローカル通信では使用できません。

1254  <br>
1255  非同期にセッションに設定されたシステムパスワードを解除します。
1256  クライアントでは Session::EventType_ClearSessionSystemPassword で通知されます。
1257  セッションホストであるときに実行できます。
1258  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1259  処理の完了は @ref IsClearSystemPasswordCompleted でチェックし、結果は @ref GetClearSystemPasswordResult で確認できます。
1260 
1261  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1262 
1263  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。ローカル通信では対応していません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1264  インターネット通信時は他の非同期処理が行われていないこと、Startup が呼び出されていること、ホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1265 
1266  @see IsClearSystemPasswordCompleted, GetClearSystemPasswordResult, IsHost
1267  */
1269 
1270  /*!
1271  @brief ClearSessionSystemPasswordAsync の非同期処理の完了をチェックします。
1272  @details この関数はローカル通信では使用できません。

1273  @ref ClearSessionSystemPasswordAsync で開始された非同期処理は、本関数で完了をチェックできます。
1274 
1275  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1276 
1277  @see ClearSessionSystemPasswordAsync, GetClearSystemPasswordResult
1278  */
1279  bool IsClearSystemPasswordCompleted() const;
1280 
1281  /*!
1282  @brief ClearSessionSystemPasswordAsync の非同期処理の結果を取得します。
1283  @details この関数はローカル通信では使用できません。

1284  @ref ClearSessionSystemPasswordAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1285 
1286  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1287 
1288  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1289  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1290  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
1291  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
1292  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1293  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1294  @if NIN_DOC
1295  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1296  @endif
1297 
1298  @see ClearSessionSystemPasswordAsync, IsClearSystemPasswordCompleted
1299  */
1301 
1302  /*!
1303  @brief 指定されたセッションの設定を更新します。
1304  @details 非同期に指定したセッションの設定を更新します。
1305  セッションホストであるときに実行できます。
1306  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1307  処理の完了は @ref IsUpdateSessionSettingCompleted でチェックし、結果は @ref GetUpdateSessionSettingResult で確認できます。
1308 
1309  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1310 
1311  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、ホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1312 
1313  @param[in] pUpdateSessionSetting 変更する設定をまとめる UpdateSessionSetting 派生クラスのポインタ
1314 
1315  @see UpdateSessionSetting, IsUpdateSessionSettingCompleted, GetUpdateSessionSettingResult, IsHost
1316  */
1317  Result UpdateSessionSettingAsync(const UpdateSessionSetting* pUpdateSessionSetting);
1318 
1319  /*!
1320  @brief UpdateSessionSettingAsync の非同期処理の完了をチェックします。
1321  @details @ref UpdateSessionSettingAsync で開始された非同期処理は、本関数で完了をチェックできます。
1322  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1323  @see UpdateSessionSettingAsync, GetUpdateSessionSettingResult
1324  */
1325  bool IsUpdateSessionSettingCompleted() const;
1326 
1327  /*!
1328  @brief UpdateSessionSettingAsync の非同期処理の結果を取得します。
1329  @details @ref UpdateSessionSettingAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1330 
1331  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1332  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1333  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
1334  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1335  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1336  @retval nn::pia::ResultErrorOccurred 内部でエラーが発生しました。ローカル通信時にのみ返ります。クリーンアップ処理を実行してください。
1337  @if NIN_DOC
1338  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。インターネットマッチメイク時や LAN マッチメイク時には、無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1339  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1340  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1341  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1342  @else
1343  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1344  @endif
1345 
1346  @see UpdateSessionSettingAsync, IsUpdateSessionSettingCompleted
1347  */
1349 
1350  /*!
1351  @brief 同じ条件のセッションが見つかった際のマッチメイクの優先度を更新します。
1352  @details この関数はローカル通信では使用できません。

1353  セッション中に 0, inet::SessionSelectionPriorityMax 以外の値で複数回更新する場合は、
1354  前回の呼び出しから 30 秒間待つ必要があります。
1355  この確認には session::Session::IsUpdatableSelectionPriority を使用します。
1356  inet::SelectionMethod_BroadenRangeWithSelectionPriority で検索を行った場合、マッチメイクの優先度がより大きいセッションが優先されるようになります。
1357  inet::SelectionMethod_ScoreBased で検索を行った場合、設定したスコアの計算にマッチメイクの優先度が使用されます。
1358  NMAS のマッチメイクセッションリストにある進行度の値を確認することで設定の確認が行えます。
1359 
1360  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1361 
1362  @retval nn::pia::ResultInvalidArgument 設定した引数が設定可能な最大値より大きい値です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1363  @retval nn::pia::ResultInvalidState LAN マッチ機能を使用している、ホストではない、のいずれかの理由で実行できません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1364  @retval nn::pia::ResultTemporaryUnavailable 0, inet::SessionSelectionPriorityMax 以外の値で前回の呼び出しから 30 秒以内に呼び出されました。session::Session::IsUpdatableSelectionPriority で呼び出し可能になっていることを確認して呼ぶ必要があります。
1365  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1366  @if NIN_DOC
1367  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1368  @endif
1369 
1370  @param[in] priority 設定するマッチメイクの優先度
1371 
1372  @see IsUpdatableSelectionPriority
1373  */
1374  Result UpdateSelectionPriority(uint8_t priority) const;
1375 
1376  /*!
1377  @brief 更新する予定の値で UpdateSelectionPriority が使用可能かを返します。
1378  @param[in] priority 更新予定のマッチメイクの優先度
1379  @return UpdateSelectionPriority が使用可能であれば、true を返します。
1380  */
1381  bool IsUpdatableSelectionPriority(uint8_t priority) const;
1382 
1383  /// @cond PRIVATE
1384  MeshLayerController* GetMeshLayerControllerPtr()
1385  {
1386  return m_pMeshLayerController;
1387  }
1388  /// @endcond
1389 
1390  /*!
1391  end of name セッションの操作
1392  @}
1393  */
1394 
1395  /*!
1396  @name コミュニティの操作
1397  @{
1398  */
1399 
1400  /*!
1401  @brief コミュニティIDをコミュニティコードに変換します。
1402  @param[in] communityId 変換したいコミュニティID
1403  @return コミュニティIDを元に変換されたコミュニティコードが返ります。
1404  */
1405  uint64_t ConvertCommunityIdToCommunityCode(uint32_t communityId);
1406 
1407  /*!
1408  @brief コミュニティコードをコミュニティIDに変換します。
1409  @param[in] communityCode 変換したいコミュニティコード
1410  @return コミュニティコードを元に変換されたコミュニティIDが返ります。
1411  */
1412  uint32_t ConvertCommunityCodeToCommunityId(uint64_t communityCode);
1413 
1414  /*!
1415  @brief コミュニティの構築を行います。
1416  @details
1417  <br>
1418  コミュニティ構築を行う非同期処理を開始します。
1419  構築したコミュニティのオーナーになります。
1420  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1421  処理の完了は @ref IsCreateCommunityCompleted でチェックし、結果は @ref GetCreateCommunityResult で確認できます。
1422 
1423  @param[in] pCreateCommunitySetting コミュニティを作成する際の条件
1424 
1425  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1426 
1427  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1428  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1429 
1430  @see IsCreateCommunityCompleted, GetCreateCommunityResult
1431  */
1432  Result CreateCommunityAsync(const CreateCommunitySetting* pCreateCommunitySetting);
1433 
1434  /*!
1435  @brief CreateCommunityAsync の非同期処理の完了をチェックします。
1436  @details @ref CreateCommunityAsync で開始された非同期処理は、本関数で完了をチェックできます。
1437 
1438  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1439 
1440  @see CreateCommunityAsync, GetCreateCommunityResult
1441  */
1442  bool IsCreateCommunityCompleted() const;
1443 
1444  /*!
1445  @brief CreateCommunityAsync の非同期処理の結果を取得します。
1446  @details @ref CreateCommunityAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1447 
1448  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1449 
1450  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1451  @retval nn::pia::ResultInvalidState 非同期処理を進行できない内部状態になりました。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1452  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1453  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1454  @retval nn::pia::ResultCreateCommunityFailedUpperLimit コミュニティの作成上限を超えました。クリーンアップ処理を実行してください。
1455  @retval nn::pia::ResultJoinCommunityFailedUpperLimit コミュニティの参加上限を超えました。クリーンアップ処理を実行してください。
1456  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1457  @if NIN_DOC
1458  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1459  @endif
1460 
1461  @see CreateCommunityAsync, IsCreateCommunitynCompleted
1462  */
1464 
1465  /*!
1466  @brief コミュニティへの参加を行います。
1467  @details
1468  <br>
1469  コミュニティ参加を行う非同期処理を開始します。
1470  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1471  処理の完了は @ref IsJoinCommunityCompleted でチェックし、結果は @ref GetJoinCommunityResult で確認できます。
1472 
1473  @param[in] pJoinCommunitySetting 参加するコミュニティの条件
1474 
1475  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1476 
1477  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1478  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1479 
1480  @see IsJoinCommunityCompleted, GetJoinCommunityResult
1481  */
1482  Result JoinCommunityAsync(const JoinCommunitySetting* pJoinCommunitySetting);
1483 
1484  /*!
1485  @brief JoinCommunityAsync の非同期処理の完了をチェックします。
1486  @details @ref JoinCommunityAsync で開始された非同期処理は、本関数で完了をチェックできます。
1487 
1488  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1489 
1490  @see JoinCommunityAsync, GetJoinCommunityResult
1491  */
1492  bool IsJoinCommunityCompleted() const;
1493 
1494  /*!
1495  @brief JoinCommunityAsync の非同期処理の結果を取得します。
1496  @details @ref JoinCommunityAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1497 
1498  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1499 
1500  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1501  @retval nn::pia::ResultInvalidState 非同期処理を進行できない内部状態になりました。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1502  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1503  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1504  @retval nn::pia::ResultAlreadyJoinedCommunity 参加しようとしたコミュニティに既に参加していた。アプリケーションで適切にハンドリングしてください。
1505  @retval nn::pia::ResultCommunityUserPasswordUnmatch 参加時に指定したユーザーパスワードがコミュニティに設定されたユーザーパスワードと一致しませんでした。クリーンアップ処理を実行してください。
1506  @retval nn::pia::ResultCreateCommunityFailedUpperLimit コミュニティの作成上限を超えました。クリーンアップ処理を実行してください。
1507  @retval nn::pia::ResultJoinCommunityFailedUpperLimit コミュニティの参加上限を超えました。クリーンアップ処理を実行してください。
1508  @retval nn::pia::ResultCommunityIsFull 参加しようとしたコミュニティが満員でした。クリーンアップ処理を実行してください。
1509  @retval nn::pia::ResultCommunityIsNotFound 存在しないコミュニティでした。クリーンアップ処理を実行してください。
1510  @retval nn::pia::ResultCommunityIsClosed 参加しようとしたコミュニティが参加可能期間外でした。クリーンアップ処理を実行してください。
1511  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1512  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1513  @if NIN_DOC
1514  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1515  @endif
1516 
1517  @see JoinCommunityAsync, IsJoinCommunitynCompleted
1518  */
1520 
1521  /*!
1522  @brief コミュニティの破棄を行います。
1523  @details
1524  <br>
1525  コミュニティ破棄を行う非同期処理を開始します。
1526  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1527  処理の完了は @ref IsDestroyCommunityCompleted でチェックし、結果は @ref GetDestroyCommunityResult で確認できます。
1528 
1529  @param[in] communityId 破棄するコミュニティ ID
1530 
1531  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1532 
1533  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1534 
1535  @see IsDestroyCommunityCompleted, GetDestroyCommunityResult
1536  */
1537  Result DestroyCommunityAsync(uint32_t communityId);
1538 
1539  /*!
1540  @brief DestroyCommunityAsync の非同期処理の完了をチェックします。
1541  @details @ref DestroyCommunityAsync で開始された非同期処理は、本関数で完了をチェックできます。
1542 
1543  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1544 
1545  @see DestroyCommunityAsync, GetDestroyCommunityResult
1546  */
1547  bool IsDestroyCommunityCompleted() const;
1548 
1549  /*!
1550  @brief DestroyCommunityAsync の非同期処理の結果を取得します。
1551  @details @ref DestroyCommunityAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1552 
1553  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1554 
1555  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1556  @retval nn::pia::ResultInvalidState 対象のコミュニティのオーナーではありません、もしくは対象のコミュニティが公式コミュニティです。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1557  @retval nn::pia::ResultSessionIsNotFound 対象のコミュニティが存在しませんでした。クリーンアップ処理を実行してください。
1558  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1559  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1560  @if NIN_DOC
1561  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1562  @endif
1563 
1564  @see DestroyCommunityAsync, IsDestroyCommunityCompleted
1565  */
1567 
1568  /*!
1569  @brief コミュニティからの離脱を行います。
1570  @details
1571  <br>
1572  コミュニティ離脱を行う非同期処理を開始します。
1573  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1574  処理の完了は @ref IsLeaveCommunityCompleted でチェックし、結果は @ref GetLeaveCommunityResult で確認できます。
1575 
1576  @param[in] communityId 離脱するコミュニティ ID
1577 
1578  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1579 
1580  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1581 
1582  @see IsLeaveCommunityCompleted, GetLeaveCommunityResult
1583  */
1584  Result LeaveCommunityAsync(uint32_t communityId);
1585 
1586  /*!
1587  @brief LeaveCommunityAsync の非同期処理の完了をチェックします。
1588  @details @ref LeaveCommunityAsync で開始された非同期処理は、本関数で完了をチェックできます。
1589 
1590  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1591 
1592  @see LeaveCommunityAsync, GetLeaveCommunityResult
1593  */
1594  bool IsLeaveCommunityCompleted() const;
1595 
1596  /*!
1597  @brief LeaveCommunityAsync の非同期処理の結果を取得します。
1598  @details @ref LeaveCommunityAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1599 
1600  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1601 
1602  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1603  @retval nn::pia::ResultInvalidState 対象のコミュニティに参加していませんでした。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1604  @retval nn::pia::ResultSessionIsNotFound 対象のコミュニティが存在しませんでした。クリーンアップ処理を実行してください。
1605  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1606  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1607  @if NIN_DOC
1608  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1609  @endif
1610 
1611  @see LeaveCommunityAsync, IsLeaveCommunityCompleted
1612  */
1614 
1615  /*!
1616  @brief コミュニティの検索を行います。
1617  @details
1618  <br>
1619  コミュニティ検索を行う非同期処理を開始します。
1620  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1621  処理の完了は @ref IsBrowseCommunityCompleted でチェックし、結果は @ref GetBrowseCommunityResult で確認できます。
1622  検索処理が成功した場合、検索できたコミュニティのリストが更新され、@ref GetBrowsedCommunityInfoList で取得できます。
1623 
1624  @param[in] pSearchCriteria コミュニティ検索時の条件
1625 
1626  @return 非同期処理の開始に成功すれば、成功のResultが返されます。
1627 
1628  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1629  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、既に通信中でないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1630 
1631  @see IsBrowseCommunityCompleted, GetBrowseCommunityResult, GetBrowsedCommunityInfoList
1632  */
1633  Result BrowseCommunityAsync(const CommunitySearchCriteria* pSearchCriteria);
1634 
1635  /*!
1636  @brief BrowseCommunityAsync の非同期処理の完了をチェックします。
1637  @details @ref BrowseCommunityAsync で開始された非同期処理は、本関数で完了をチェックできます。
1638 
1639  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1640 
1641  @see BrowseCommunityAsync, GetBrowseCommunityResult, GetBrowsedCommunityInfoList
1642  */
1643  bool IsBrowseCommunityCompleted() const;
1644 
1645  /*!
1646  @brief BrowseCommunityAsync の非同期処理の結果を取得します。
1647  @details @ref BrowseCommunityAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1648 
1649  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1650 
1651  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1652  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1653  @retval nn::pia::ResultCancelled 実行中の非同期処理をキャンセルしました。クリーンアップ処理を実行してください。
1654  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1655  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1656  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1657  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1658  @if NIN_DOC
1659  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1660  @endif
1661 
1662  @see BrowseCommunityAsync, IsBrowseCommunityCompleted, GetBrowsedCommunityInfoList
1663  */
1665 
1666  /*!
1667  @brief BrowseCommunityAsync の非同期処理で検索できたコミュニティのリストを取得します。
1668  @details @ref BrowseCommunityAsync で開始された非同期処理が完了し、@ref GetBrowseCommunityResult が成功した後、本関数でコミュニティリストを取得できます。
1669 
1670  @return 検索できたコミュニティのリストのポインタを返します。
1671 
1672  @see BrowseCommunityAsync, IsBrowseCommunityCompleted, GetBrowseCommunityResult
1673  */
1674  ICommunityInfoList* GetBrowsedCommunityInfoList();
1675 
1676  /*!
1677  @brief 指定されたコミュニティの設定を更新します。
1678  @details 非同期に指定したコミュニティの設定を更新します。
1679  コミュニティホストであるときに実行できます。
1680  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
1681  処理の完了は @ref IsUpdateCommunityCompleted でチェックし、結果は @ref GetUpdateCommunityResult で確認できます。
1682 
1683  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
1684  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、ホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1685 
1686  @param[in] pUpdateCommunitySetting 変更する設定をまとめる UpdateCommunitySetting 派生クラスのポインタ
1687 
1688  @see UpdateCommunitySetting, IsUpdateCommunityCompleted, GetUpdateCommunityResult
1689  */
1690  Result UpdateCommunityAsync(const UpdateCommunitySetting* pUpdateCommunitySetting);
1691 
1692  /*!
1693  @brief UpdateCommunityAsync の非同期処理の完了をチェックします。
1694  @details @ref UpdateCommunityAsync で開始された非同期処理は、本関数で完了をチェックできます。
1695  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
1696  @see UpdateCommunityAsync, GetUpdateCommunityResult
1697  */
1698  bool IsUpdateCommunityCompleted() const;
1699 
1700  /*!
1701  @brief UpdateCommunityAsync の非同期処理の結果を取得します。
1702  @details @ref UpdateCommunityAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
1703 
1704  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
1705  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。コミュニティのオーナーではないか、公式コミュニティを更新しようとしていないか、ユーザーパスワード無しのコミュニティにパスワードを設定しようとしていないか、または他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1706  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1707  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のコミュニティが消失しました。クリーンアップ処理を実行してください。
1708  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
1709  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1710  @if NIN_DOC
1711  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1712  @endif
1713 
1714  @see UpdateCommunityAsync, IsUpdateCommunityCompleted
1715  */
1717 
1718 
1719  /*!
1720  end of name コミュニティの操作
1721  @}
1722  */
1723 
1724  /*!
1725  @name セッション情報の解析
1726  @{
1727  */
1728 
1729  /*!
1730  @brief 自分自身がホストであるかどうかを取得します。
1731  @details この関数は通常セッションのホストであるかどうかを返します。
1732 
1733  @return 自分自身がホストの場合は true、そうでない場合は false が返ります。
1734  */
1735  bool IsHost() const;
1736 
1737  /*!
1738  @cond PRIVATE
1739  @brief 自分自身がメッシュのホストであるかどうかを取得します。
1740  @details この関数はメッシュのホストであるかどうかを返します。
1741 
1742  @return 自分自身がホストの場合は true、そうでない場合は false が返ります。
1743  */
1744  bool IsMeshHost() const;
1745  /// @endcond
1746 
1747  /*!
1748  @cond PRIVATE
1749  @brief 自分自身がセッションのオーナーであるかどうかを取得します。
1750  @return 自分自身がセッションのオーナーの場合は true、そうでない場合は false が返ります。
1751  */
1752  bool IsOwner() const;
1753  /// @endcond
1754 
1755  /// @cond PRIVATE
1756  /*!
1757  @brief 自分自身を示す StationIndex を取得します
1758  @details 自分自身の StationIndex が確定していない場合は StationIndex_Invalid が返ります。
1759 
1760  @return 自分自身を示す StationIndex。
1761  */
1762  StationIndex GetLocalStationIndex() const;
1763 
1764  /*!
1765  @brief ホストを示す StationIndex を取得します
1766  @details セッション参加中でない場合、この関数は StationIndex_Invalid を返します。
1767  セッション参加中、ジョイントセッション参加中の場合、この関数はセッションのホストを示す StationIndex を返します。
1768 
1769  @return 自身が参加しているセッションのホストを示す StationIndex を返します。
1770  */
1771  StationIndex GetHostStationIndex() const;
1772  /// @endcond
1773 
1774  /*!
1775  @brief 任意の StationId がセッション内で現在有効かどうかを確認します。
1776  @param[in] id 確認したい StationId を指定します。
1777 
1778  @return 指定された StationId が有効な場合は true、そうでなければ false が返ります。
1779  */
1780  bool IsValidStationId(StationId id) const;
1781 
1782  /// @cond PRIVATE
1783  bool IsValidStationIndex(StationIndex index) const;
1784  /// @endcond
1785 
1786 
1787  /*!
1788  @brief セッション内での自身を示す StationId を取得します。
1789 
1790  @details セッション参加中でない場合、この関数は StationIdInvalid を返します。
1791 
1792  @return 自身を示す StationId を返します。
1793  */
1795  {
1796  return m_LocalStationId;
1797  }
1798 
1799  /*!
1800  @brief 自身が参加しているセッションのホストを示す StationId を取得します。
1801 
1802  @details セッション参加中でない場合、この関数は StationIdInvalid を返します。
1803  セッション参加中、ジョイントセッション参加中の場合、この関数はセッションのホストを示す StationId を返します。
1804 
1805  @return 自身が参加しているセッションのホストを示す StationId を返します。
1806  */
1808  {
1809  return m_HostStationId;
1810  }
1811 
1812  /*!
1813  @brief 自分自身を示す StationConnectionInfo を取得します。
1814 
1815  @details セッション参加中、ジョイントセッション参加中の場合、この関数は自分自身を示す StationConnectionInfo を返します。
1816  <br>
1817  @param[out] pInfoOut 取得したセッションホストを示すアドレスの格納先を示すポインタ
1818  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
1819  @retval ResultInvalidArgument 引数に誤りがあります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1820  @retval ResultInvalidState セッションに参加していません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1821  @retval ResultTemporaryUnavailable セッション移行中です。アプリケーションで適切にハンドリングしてください。
1822 
1823  @return 自分自身を示す StationConnectionInfo を返します。
1824  */
1826 
1827  /*!
1828  @brief 自身が参加しているセッションのホストを示す StationConnectionInfo を取得します。
1829 
1830  @details セッション参加中、ジョイントセッション参加中の場合、この関数はセッションのホストを示す StationConnectionInfo を返します。
1831  <br>
1832  @param[out] pInfoOut 取得したセッションホストを示すアドレスの格納先を示すポインタ
1833  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
1834  @retval ResultInvalidArgument 引数に誤りがあります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1835  @retval ResultInvalidState セッションに参加していません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1836  @retval ResultTemporaryUnavailable セッション移行中です。アプリケーションで適切にハンドリングしてください。
1837 
1838  @return 自身が参加しているセッションのホストを示す StationConnectionInfo を返します。
1839  */
1841 
1842  /*!
1843  @brief 現在参加しているセッションで接続している有効なステーション数を取得します。
1844  @details 現在参加しているセッションで接続している有効なステーション数を取得します。セッション参加者が増減する際に更新されます。<br>
1845  セッションの状態に応じて、以下の値を返します。<br>
1846  @ref GetStatus が Status_ConnectedSession を返すときは、参加中のセッションで接続しているステーション数を返します。
1847  @ref GetStatus が Status_MigratingSession を返すときは、不定値を返します。
1848  @ref GetStatus が Status_ConnectedJointSession を返すときは、参加中のジョイントセッションのセッションで接続しているステーション数を返します。
1849  @return 接続中のステーション数。
1850  */
1851  uint16_t GetStationNum() const;
1852 
1853  /*!
1854  @brief 現在参加しているセッションで接続しているプレイヤー数を取得します。
1855  @details 現在参加しているセッションで接続しているプレイヤー数を取得します。セッション参加者が増減する際に更新されます。<br>
1856  セッションの状態に応じて、以下の値を返します。<br>
1857  @ref GetStatus が Status_ConnectedSession を返すときは、参加中のセッションで接続しているプレイヤー数を返します。
1858  @ref GetStatus が Status_MigratingSession を返すときは、不定値を返します。
1859  @ref GetStatus が Status_ConnectedJointSession を返すときは、参加中のジョイントセッションのセッションで接続しているプレイヤー数を返します。
1860  @return 接続中のプレイヤー数。
1861  */
1862  uint16_t GetPlayerNum() const;
1863 
1864  /*!
1865  @brief 現在参加しているセッションで接続しているマッチメイクセッション参加者数を取得します。
1866  @details 現在参加しているセッションで接続しているマッチメイクセッション参加者数を取得します。マッチメイクセッションの参加者が増減する際に更新されます。<br>
1867  セッションの状態に応じて、以下の値を返します。<br>
1868  @ref GetStatus が Status_ConnectedSession を返すときは、参加中のマッチメイクセッションに参加しているマッチメイクセッション参加者数を返します。
1869  @ref GetStatus が Status_MigratingSession を返すときは、不定値を返します。
1870  @ref GetStatus が Status_ConnectedJointSession を返すときは、参加中のジョイントセッションのマッチメイクセッションに参加しているマッチメイクセッション参加者数を返します。
1871  @return 接続中のマッチメイクセッション参加者数。
1872  */
1873  uint16_t GetMatchmakeSessionParticipantNum() const;
1874 
1875  /*!
1876  @brief マッチメイクセッションに参加しているステーション数を取得します。
1877  @details マッチメイクセッションに参加しているステーション数を取得します。マッチメイクセッションの参加者が増減する際に更新されます。
1878  あるステーションがマッチメイクセッションに参加してからセッションに参加するまでの間に、@ref GetStationNum が返す値と一致しない期間があります。<br>
1879  セッションの状態に応じて、以下の値を返します。<br>
1880  @ref GetStatus が Status_ConnectedSession を返すときは、参加中のマッチメイクセッションに参加しているステーション数を返します。
1881  @ref GetStatus が Status_MigratingSession を返すときは、不定値を返します。
1882  @ref GetStatus が Status_ConnectedJointSession を返すときは、参加中のジョイントセッションのマッチメイクセッションに参加しているステーション数を返します。
1883 
1884  @return マッチメイクセッションに参加中のステーション数。
1885  */
1886  uint16_t GetMatchmakeSessionStationNum() const;
1887 
1888  /*!
1889  @brief セッション内の有効な StationId の数を取得します。
1890  @details セッション参加中でない場合、この関数は 0 を返します。
1891  @return セッション内の有効な StationId の数を返します。
1892  */
1893  uint16_t GetValidStationIdNum() const;
1894 
1895 
1896  /*!
1897  @brief セッションが通信可能な状態か否かを確認します。
1898 
1899  @details セッションや接続状況に異常が発生した場合、この関数で取得できる Result が変化します。
1900  @details セッション参加中に定期的に呼び出して状態を確認する必要があります。
1901  また、Startup() 呼び出し後から JoinRandomSessionAsync(), CreateSessionAsync(), JoinSessionAsync() などによりセッションに参加するまでの間、
1902  定期的に呼び出してネットワークの状態を確認することが可能です。
1903  非同期処理中は、非同期処理内で確認し、切断時には非同期処理結果としてエラーを返すため、呼び出す必要はありません。(非同期処理中は適切な値を返しません)
1904  通信可能な状態の場合、 @ref GetStatus で詳細な状態を取得できます。
1905  セッションへ参加した後にメッシュが通信不可能な状態になった場合、 @ref GetSessionDisconnectReason で通信不可能になった詳細な理由を確認可能です。
1906 
1907  @return 通信可能な状態の場合は IsSuccess() が真となる Result を返します。それ以外では以下の Result を返します。
1908  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
1909  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1910  @if NIN_DOC
1911  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
1912  @retval nn::pia::ResultWifiOff 機内モードが有効になったため無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1913  @retval nn::pia::ResultSleep スリープによって無線機能が無効になりました。ローカル通信時にのみ返ります。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
1914  @endif
1915  */
1916  Result CheckConnectionError() const;
1917 
1918 
1919  /*!
1920  @brief セッションの状態を示す @ref Status を取得します。
1921  @details セッションや接続状況に異常が発生した場合、この関数で取得できる @ref Status が変化します。定期的に呼び出して状態を確認する必要があります。
1922  @return 現在の @ref Status を返します。
1923  */
1924  Status GetStatus() const;
1925 
1926  /*!
1927  @brief ビットレート判定機能でのビットレート値が取得できるかどうかを取得します。
1928 
1929  @return ビットレート値が取得できる状態になっていれば true を返します。タイムアウトやキャンセル等の理由で測定が失敗に終わった場合も true が返されます。
1930  */
1931  bool IsBitRateCheckCompleted() const;
1932 
1933  /*!
1934  @brief ビットレート判定機能によって計測された、アップリンク方向の回線のビットレートを取得します。
1935 
1936  @details この API 呼び出しで得られる値は、測定処理において単位時間あたりに受信できたデータ量にすぎず、
1937  必ずしも回線の真の実力を表すものではないことに注意してください。
1938  実際には高ビットレートが期待できる回線であったとしても、アプリケーション側の要求水準が
1939  控えめなものであれば、測定処理におけるデータ送受信量も控えめなものとなるので、
1940  取得できる bps 値は小さめなものとなります。
1941 
1942  @param[out] pBps 測定されたビットレート値がセットされます。単位は bps です。測定値が得られなかった場合は負の値がセットされます。
1943 
1944  @return 呼び出しが成功すれば、IsSuccess() が true を返す Result が返されます。
1945 
1946  @retval ResultNotInitialized インスタンスが初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1947  @retval ResultInvalidArgument 引数が誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1948  @retval ResultInvalidState この関数を呼び出すタイミングが誤っています。ビットレート判定機能を利用しない設定であるにもかかわらず、本 API を呼び出している可能性があります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
1949  */
1950  Result GetUplinkBitRate(int32_t* pBps);
1951 
1952  /*!
1953  @brief ビットレート判定機能が有効かどうかを取得します。
1954 
1955  @return ビットレート判定機能が有効であれば true を返します。
1956  */
1957  bool IsBitRateCheckEnabled() const;
1958 
1959  /// @cond PRIVATE
1960  /*!
1961  @brief セッションへの参加状況を示す MatchmakeStatus を取得します。
1962 
1963  @return 現在の MatchmakeStatus を返します。
1964  */
1965  MatchmakeStatus GetMatchmakeStatus() const
1966  {
1967  return m_MatchmakeStatus;
1968  }
1969  /// @endcond
1970 
1971  /// @cond PRIVATE
1972  /*!
1973  @brief 接続状態を示す ConnectionStatus を取得します。
1974 
1975  @return 現在の ConnectionStatus を返します。
1976  */
1977  ConnectionStatus GetConnectionStatus() const
1978  {
1979  return m_ConnectionStatus;
1980  }
1981  /// @endcond
1982 
1983  /// @cond PRIVATE
1984  StationIdStatusTable* GetStationIdStatusTablePtr()
1985  {
1986  return m_pStationIdStatusTable;
1987  }
1988  SessionProtocol* GetSessionProtocolPtr()
1989  {
1990  return m_pSessionProtocol;
1991  }
1992  /// @endcond
1993 
1994  /*!
1995  @brief セッション ID を取得します。
1996  @if CTR_DOC
1997  @details ローカル通信時には同じセッション ID を持つ異なるセッションが存在する場合があります。
1998  @endif
1999  @if NIN_DOC
2000  @details ローカル通信時には同じセッション ID を持つ異なるセッションが存在する場合があります。
2001  @endif
2002 
2003  @return 現在参加しているセッションのセッション ID を返します。セッションに参加していない状態では InvalidSessionId を返します。
2004  */
2005  uint32_t GetSessionId() const
2006  {
2007  return GetCurrentSessionId();
2008  }
2009 
2010  /*!
2011  @brief 指定したステーション ID のステーションが参加しているセッション ID を取得します。
2012  @details 指定したステーション ID のステーションが参加しているセッション ID を取得します。
2013 
2014  @param[in] id ステーション ID。
2015 
2016  @return 指定したステーションIDのステーションが参加しているセッションのセッション ID を返します。そのステーションがセッションに参加していない状態では InvalidSessionId を返します。
2017  */
2018  uint32_t GetSessionId(StationId id) const;
2019 
2020  /// @cond PRIVATE
2021  void SetSessionId(uint32_t sessionId)
2022  {
2023  SetCurrentSessionId(sessionId);
2024  }
2025  /// @endcond
2026 
2027 
2028  /*!
2029  @brief セッション内で有効な StationId のイテレータを返します(非 const 版)。
2030 
2031  @return 呼出時点でセッション内で有効な StationId リストの先頭を示すイテレータを返します。
2032  @see End
2033  */
2035  {
2036  return StationIdIterator(m_ValidStationIdList.Begin());
2037  }
2038 
2039  /*!
2040  @brief セッション内で有効な StationId のイテレータを返します(非 const 版)。
2041 
2042  @return 呼出時点でセッション内で有効な StationId リストの末尾の要素の次を示すイテレータを返します。
2043  @see Begin
2044  */
2046  {
2047  return StationIdIterator(m_ValidStationIdList.End());
2048  }
2049 
2050  /*!
2051  @brief セッション内で有効な StationId のイテレータを返します(非 const 版)。
2052 
2053  @return 呼出時点でセッション内で有効な StationId リストの先頭を示すイテレータを返します。
2054  @see End
2055  */
2057  {
2058  return StationIdConstIterator(m_ValidStationIdList.ConstBegin());
2059  }
2060 
2061  /*!
2062  @brief セッション内で有効な StationId のイテレータを返します(非 const 版)。
2063 
2064  @return 呼出時点でセッション内で有効な StationId リストの末尾の要素の次を示すイテレータを返します。
2065  @see Begin
2066  */
2068  {
2069  return StationIdConstIterator(m_ValidStationIdList.ConstEnd());
2070  }
2071 
2072  /*!
2073  @brief セッションの参加募集状態を取得します。
2074  @details セッションホストのみ使用可能です。
2075  @return セッションの参加募集状態を返します。
2076  @see IsHost
2077  */
2079 
2080  /*!
2081  @brief 参加中のセッション情報を取得します。
2082  @details セッション情報は自動的には更新されません。セッション情報の更新は @ref RequestSessionInfoAsync で行う必要があります。
2083 
2084  @return 参加中のセッション情報を返します。
2085  @ref CreateSessionAsync 、@ref JoinSessionAsync 、@ref JoinRandomSessionAsync 、@ref RequestSessionInfoAsync の非同期処理完了後から他の非同期処理開始前まで取得可能です。
2086  他の非同期処理開始後は NULL を返します。
2087  */
2088  const ISessionInfo* GetSessionInfo() const;
2089 
2090  /*!
2091  @brief 参加中のセッション情報の取得要求を行います。
2092  @details 参加中のセッション情報の取得要求を行う非同期処理を開始します。
2093  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2094  処理の完了は @ref IsRequestSessionInfoCompleted でチェックし、結果は @ref GetRequestSessionInfoResult で確認できます。
2095  非同期処理が成功していた場合は、@ref GetSessionInfo でセッション情報を取得できますが、非同期処理中にセッションホストが UpdateSessionSettingAsync でセッション情報を更新した場合、
2096  取得する情報が更新前の情報となる場合があります。
2097  <br>
2098  インターネット通信の場合、ゲームサーバーアクセスを行います。1 分間に 10 回以上の呼び出しを行ってはいけません。
2099  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2100  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。セッションに参加していないか、他の非同期処理が行われていないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2101 
2102  @see IsRequestSessionInfoCompleted, GetRequestSessionInfoResult
2103 
2104  */
2106 
2107  /*!
2108  @brief RequestSessionInfoAsync の非同期処理の完了をチェックします。
2109  @details @ref RequestSessionInfoAsync で開始された非同期処理は、本関数で完了をチェックできます。
2110 
2111  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2112  @see RequestSessionInfoAsync, GetRequestSessionInfoResult
2113  */
2114  bool IsRequestSessionInfoCompleted() const;
2115 
2116  /*!
2117  @brief RequestSessionInfoAsync の非同期処理の結果を取得します。
2118  @details @ref RequestSessionInfoAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2119 
2120  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2121 
2122  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2123  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
2124  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2125  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
2126  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2127  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2128  @if NIN_DOC
2129  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2130  @endif
2131  */
2133 
2134  /*!
2135  end of name セッション情報の解析
2136  @}
2137  */
2138 
2139  /*!
2140  @name ジョイントセッション機能
2141  @{
2142  */
2143 
2144  /*!
2145  @brief ランダムマッチメイクでジョイントセッションに参加します。
2146  @details この関数はローカル通信では使用できません。

2147  ホストのみ使用可能です。
2148  ランダムマッチメイクでジョイントセッションに参加を行う非同期処理を開始します。
2149  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2150  処理の完了は @ref IsJoinRandomJointSessionCompleted でチェックし、結果は @ref GetJoinRandomJointSessionResult で確認できます。
2151 
2152  ホストが本関数で非同期処理を開始した場合、クライアント側でもランダムマッチメイクでジョイントセッションに参加を行う内部処理が自動的に開始されます。
2153  自動的に開始された処理の進捗は、状態変化イベント通知をハンドリングするか @ref GetStatus で取得できる @ref Status をチェックすることで確認できます。
2154 
2155  非同期処理中は、送受信処理関連など一部の API は一時的に使用できません。
2156 
2157  @param[in] pJoinRandomSessionSetting ランダムマッチメイクの設定を指定します。
2158 
2159  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2160 
2161  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2162  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないか、ホストかどうか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2163 
2164  @see IsJoinRandomJointSessionCompleted, GetJoinRandomJointSessionResult
2165  */
2166  Result JoinRandomJointSessionAsync(const JoinRandomSessionSetting* pJoinRandomSessionSetting);
2167 
2168  /*!
2169  @brief JoinRandomJointSessionAsync の非同期処理の完了をチェックします。
2170  @details この関数はローカル通信では使用できません。

2171  @ref JoinRandomJointSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
2172 
2173  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2174 
2175  @see JoinRandomJointSessionAsync, GetJoinRandomJointSessionResult
2176  */
2177  bool IsJoinRandomJointSessionCompleted() const;
2178 
2179  /*!
2180  @brief JoinRandomJointSessionAsync の非同期処理の結果を取得します。
2181  @details この関数はローカル通信では使用できません。

2182  @ref JoinRandomJointSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2183 
2184  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2185 
2186  @retval nn::pia::ResultInvalidState 自身がジョイントセッション処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2187  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2188  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2189  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。クリーンアップ処理を実行してください。
2190  @retval nn::pia::ResultMatchmakeSessionIsFull 対象のマッチメイクセッションが満員でした。クリーンアップ処理を実行してください。
2191  @retval nn::pia::ResultDeniedByParticipants セッション参加者が自分をブラックリストに登録しています。クリーンアップ処理を実行してください。
2192  @retval nn::pia::ResultParticipantInBlockList セッションに自分がブロックリストに登録している参加者がいました。クリーンアップ処理を実行してください。
2193  @retval nn::pia::ResultSessionUserPasswordUnmatch 参加時に指定したユーザーパスワードがセッションに設定されたユーザーパスワードと一致しませんでした。クリーンアップ処理を実行してください。
2194  @retval nn::pia::ResultSessionSystemPasswordUnmatch 参加時に指定したシステムパスワードがセッションに設定されたシステムパスワードと一致しませんでした。クリーンアップ処理を実行してください。
2195  @retval nn::pia::ResultSessionIsClosed 参加を行おうとしたセッションが締め切られていました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2196  @retval nn::pia::ResultHostIsNotFriend 参加を行おうとしたセッションのホストがフレンドではありませんでした。クリーンアップ処理を実行してください。
2197  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2198  @retval nn::pia::ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
2199  @retval nn::pia::ResultCompanionStationIsLeft 同行するクライアントとの接続が切断しました。クリーンアップ処理を実行してください。
2200  @retval nn::pia::ResultSessionMigrationFailed セッション移行処理に失敗しました。クリーンアップ処理を実行してください。
2201  @retval nn::pia::ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2202  @retval nn::pia::ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2203  @retval nn::pia::ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2204  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2205  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2206  @retval nn::pia::ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2207  @retval nn::pia::ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2208  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2209  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2210  @retval nn::pia::ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2211  @retval nn::pia::ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2212  @retval nn::pia::ResultJoinRequestDenied メッシュホストに接続を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2213  @retval nn::pia::ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2214  @retval nn::pia::ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2215  @retval nn::pia::ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2216  @retval nn::pia::ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2217  @retval nn::pia::ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2218  @retval nn::pia::ResultInvalidSystemMessage メッシュホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2219  @retval nn::pia::ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2220  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2221  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2222  @retval nn::pia::ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
2223  @if NIN_DOC
2224  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
2225  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2226  @endif
2227 
2228  @see JoinRandomJointSessionAsync, IsJoinRandomJointSessionCompleted
2229  */
2231 
2232  /*!
2233  @brief JoinRandomJointSessionAsync の非同期処理でセッション参加時のスコアを取得します。
2234  @details インターネット通信時のみ有効です。
2235  スコアベースマッチメイク指定で @ref JoinRandomJointSessionAsync の非同期処理が完了した後、本関数でスコアを取得できます。
2236  ただし、自分がジョイントセッションホストの場合はスコアは取得できません。
2237 
2238  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2239 
2240  @retval nn::pia::ResultInvalidArgument 引数で指定されたポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2241  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、開始されていない場合、スコアベースマッチメイクを指定していない、自分が @ref JoinRandomJointSessionAsync を呼び出していない、ジョイントセッションホストであるなど、スコアが取得できない状態の場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2242  */
2243  Result GetJoinRandomJointSessionScore(uint32_t* pScore) const;
2244 
2245  //! @cond PRIVATE
2246  /*!
2247  @brief ジョイントセッションの構築を行います。
2248  @details この関数はローカル通信では使用できません。

2249  ホストのみ使用可能です。
2250  ジョイントセッション構築を行う非同期処理を開始します。
2251  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2252  処理の完了は @ref IsCreateJointSessionCompleted でチェックし、結果は @ref GetCreateJointSessionResult で確認できます。
2253 
2254  ホストが本関数で非同期処理を開始した場合、クライアント側でもジョイントセッション構築を行う内部処理が自動的に開始されます。
2255  自動的に開始された処理の進捗は、状態変化イベント通知をハンドリングするか @ref GetStatus で取得できる @ref Status をチェックすることで確認できます。
2256 
2257  非同期処理中は、送受信処理関連など一部の API は一時的に使用できません。
2258 
2259  @param[in] pCreateSessionSetting 新しいセッションを作成する場合の設定を示す CreateSessionSetting のポインタを指定します。
2260 
2261  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2262 
2263  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2264  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないか、ホストかどうか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2265 
2266  @see IsCreateJointSessionCompleted, GetCreateJointSessionResult
2267  */
2268  Result CreateJointSessionAsync(const CreateSessionSetting* pCreateSessionSetting);
2269 
2270  /*!
2271  @brief CreateJointSessionAsync の非同期処理の完了をチェックします。
2272  @details この関数はローカル通信では使用できません。

2273  @ref CreateJointSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
2274 
2275  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2276 
2277  @see CreateJointSessionAsync, GetCreateJointSessionResult
2278  */
2279  bool IsCreateJointSessionCompleted() const;
2280 
2281  /*!
2282  @brief CreateJointSessionAsync の非同期処理の結果を取得します。
2283  @details この関数はローカル通信では使用できません。

2284  @ref CreateJointSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2285 
2286  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2287 
2288  @retval nn::pia::ResultInvalidState 自身がジョイントセッション処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2289  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2290  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2291  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2292  @retval nn::pia::ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
2293  @retval nn::pia::ResultCompanionStationIsLeft 同行するクライアントとの接続が切断しました。クリーンアップ処理を実行してください。
2294  @retval nn::pia::ResultSessionMigrationFailed セッション移行処理に失敗しました。クリーンアップ処理を実行してください。
2295  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2296  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2297  @retval nn::pia::ResultSessionWrongState 構築したセッションの状態が異常でした。クリーンアップ処理を実行してください。
2298  @if NIN_DOC
2299  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
2300  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2301  @endif
2302 
2303  @see CreateJointSessionAsync, IsCreateJointSessionCompleted
2304  */
2305  Result GetCreateJointSessionResult() const;
2306 
2307  /*!
2308  @brief 指定したジョイントセッションに参加します。
2309  @details この関数はローカル通信では使用できません。

2310  ホストのみ使用可能です。
2311  指定したジョイントセッションに参加を行う非同期処理を開始します。
2312  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2313  処理の完了は @ref IsJoinJointSessionCompleted でチェックし、結果は @ref GetJoinJointSessionResult で確認できます。
2314 
2315  ホストが本関数で非同期処理を開始した場合、クライアント側でもランダムマッチメイクでジョイントセッションに参加を行う内部処理が自動的に開始されます。
2316  自動的に開始された処理の進捗は、状態変化イベント通知をハンドリングするか @ref GetStatus で取得できる @ref Status をチェックすることで確認できます。
2317 
2318  非同期処理中は、送受信処理関連など一部の API は一時的に使用できません。
2319 
2320  @param pJoinSessionSetting 参加するセッションの条件
2321 
2322  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2323 
2324  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2325  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないか、ホストかどうか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2326 
2327  @see IsJoinJointSessionCompleted, GetJoinJointSessionResult
2328  */
2329  Result JoinJointSessionAsync(const JoinSessionSetting* pJoinSessionSetting);
2330 
2331  /*!
2332  @brief JoinJointSessionAsync の非同期処理の完了をチェックします。
2333  @details この関数はローカル通信では使用できません。

2334  @ref JoinJointSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
2335 
2336  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2337 
2338  @see JoinJointSessionAsync, GetJoinJointSessionResult
2339  */
2340  bool IsJoinJointSessionCompleted() const;
2341 
2342  /*!
2343  @brief JoinJointSessionAsync の非同期処理の結果を取得します。
2344  @details この関数はローカル通信では使用できません。

2345  @ref JoinJointSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2346 
2347  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2348 
2349  @retval nn::pia::ResultInvalidState 自身がジョイントセッション処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2350  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2351  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2352  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失もしくは締め切られました。クリーンアップ処理を実行してください。
2353  @retval nn::pia::ResultMatchmakeSessionIsFull 対象のマッチメイクセッションが満員でした。クリーンアップ処理を実行してください。
2354  @retval nn::pia::ResultDeniedByParticipants セッション参加者が自分をブラックリストに登録しています。クリーンアップ処理を実行してください。
2355  @retval nn::pia::ResultParticipantInBlockList セッションに自分がブロックリストに登録している参加者がいました。クリーンアップ処理を実行してください。
2356  @retval nn::pia::ResultSessionUserPasswordUnmatch 参加時に指定したユーザーパスワードがセッションに設定されたユーザーパスワードと一致しませんでした。クリーンアップ処理を実行してください。
2357  @retval nn::pia::ResultSessionSystemPasswordUnmatch 参加時に指定したシステムパスワードがセッションに設定されたシステムパスワードと一致しませんでした。クリーンアップ処理を実行してください。
2358  @retval nn::pia::ResultSessionIsClosed 参加を行おうとしたセッションが締め切られていました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2359  @retval nn::pia::ResultHostIsNotFriend 参加を行おうとしたセッションのホストがフレンドではありませんでした。クリーンアップ処理を実行してください。
2360  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2361  @retval nn::pia::ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
2362  @retval nn::pia::ResultCompanionStationIsLeft 同行するクライアントとの接続が切断しました。クリーンアップ処理を実行してください。
2363  @retval nn::pia::ResultSessionMigrationFailed セッション移行処理に失敗しました。クリーンアップ処理を実行してください。
2364  @retval nn::pia::ResultStationConnectionFailed 接続処理に失敗しました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2365  @retval nn::pia::ResultStationConnectionNatTraversalFailedUnknown NAT トラバーサル接続処理に失敗しました。NAT タイプは不明でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2366  @retval nn::pia::ResultNatTraversalFailedBothEim NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2367  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdm NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2368  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEim NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2369  @retval nn::pia::ResultNatTraversalFailedBothEdm NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2370  @retval nn::pia::ResultNatTraversalFailedBothEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2371  @retval nn::pia::ResultNatTraversalFailedLocalEimRemoteEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EIM, 接続失敗した相手の NAT タイプは EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2372  @retval nn::pia::ResultNatTraversalFailedLocalEdmRemoteEimSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身の NAT タイプは EDM, 接続失敗した相手の NAT タイプは EIM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2373  @retval nn::pia::ResultNatTraversalFailedBothEdmSamePublicAddress NAT トラバーサル接続処理に失敗しました。自身および接続失敗した相手の NAT タイプは共に EDM でした。また、自身および接続失敗した相手は同じグローバルIPアドレスでした。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2374  @retval nn::pia::ResultNatTraversalRequestTimeout NAT トラバーサル接続処理に失敗しました。NAT トラバーサル要求がタイムアウトしました。 インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理を実行してください。
2375  @retval nn::pia::ResultJoinRequestDenied メッシュホストに接続を拒否されました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2376  @retval nn::pia::ResultMeshIsFull 参加を希望したメッシュが満員で、参加できませんでした。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2377  @retval nn::pia::ResultRelayFailedNoCandidate リレー経路の候補がいなかったため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2378  @retval nn::pia::ResultRelayFailedRttLimit リレー経路の RTT 制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2379  @retval nn::pia::ResultRelayFailedRelayNumLimit リレー経路のリレー依頼数制限を超えたため、リレー接続に失敗しました。クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2380  @retval nn::pia::ResultRelayFailedUnknown リレー接続に失敗しました。(詳細不明)クリーンアップ処理を実行してください。アプリケーションで適切にハンドリングしてください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示しても構いませんが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。
2381  @retval nn::pia::ResultInvalidSystemMessage メッシュホストから不正な応答が届いたため、処理を中断しました。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2382  @retval nn::pia::ResultIncompatibleFormat 相手の通信形式が非互換です。異なる ROM (通信互換の無い Ver.の Pia を使用した ROM)と通信しようとした場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2383  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2384  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2385  @retval nn::pia::ResultSessionWrongState 参加したセッションの状態が異常でした。クリーンアップ処理を実行してください。
2386  @if NIN_DOC
2387  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
2388  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2389  @endif
2390 
2391  @see JoinJointSessionAsync, IsJoinJointSessionCompleted
2392  */
2393  Result GetJoinJointSessionResult() const;
2394 
2395  /*!
2396  @brief ジョイントセッションから離脱します。
2397  @details この関数はローカル通信では使用できません。

2398  ジョイントセッションホストのみ使用可能です。
2399  ジョイントセッションから離脱する非同期処理を開始します。
2400 
2401  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2402  処理の完了は @ref IsLeaveJointSessionCompleted でチェックし、結果は @ref GetLeaveJointSessionResult で確認できます。
2403 
2404  ホストが本関数でジョイントセッションの離脱処理を開始した場合、同行者側でも離脱の内部処理が自動的に開始されます。
2405  自動的に開始された処理の進捗は、状態変化イベント通知をハンドリングするか @ref GetStatus で取得できる @ref Status をチェックすることで確認できます。
2406 
2407  非同期処理中は、送受信処理関連など一部の API は一時的に使用できません。
2408 
2409  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2410 
2411  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2412  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2413 
2414  @see IsLeaveJointSessionCompleted, GetLeaveJointSessionResult
2415  */
2416  Result LeaveJointSessionAsync();
2417 
2418  /*!
2419  @brief LeaveJointSessionAsync の非同期処理の完了をチェックします。
2420  @details この関数はローカル通信では使用できません。

2421  @ref LeaveJointSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
2422 
2423  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2424 
2425  @see LeaveJointSessionAsync, GetLeaveJointSessionResult
2426  */
2427  bool IsLeaveJointSessionCompleted() const;
2428 
2429  /*!
2430  @brief LeaveJointSessionAsync の非同期処理の結果を取得します。
2431  @details この関数はローカル通信では使用できません。

2432  @ref LeaveJointSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2433 
2434  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2435 
2436  @retval nn::pia::ResultInvalidState 処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2437  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2438  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2439  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2440  @retval nn::pia::ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
2441  @retval nn::pia::ResultCompanionStationIsLeft 同行するクライアントとの接続が切断しました。クリーンアップ処理を実行してください。
2442  @retval nn::pia::ResultSessionMigrationFailed セッション移行処理に失敗しました。クリーンアップ処理を実行してください。
2443  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2444  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2445  @if NIN_DOC
2446  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
2447  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2448  @endif
2449 
2450  @see LeaveJointSessionAsync, IsLeaveJointSessionCompleted
2451  */
2452  Result GetLeaveJointSessionResult() const;
2453  //! @endcond
2454 
2455  /*!
2456  @brief ジョイントセッションの解散を行います。
2457  @details この関数はローカル通信では使用できません。

2458  ジョイントセッションホストのみ使用可能です。
2459  ジョイントセッションの解散を行う非同期処理を開始します。
2460 
2461  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2462  処理の完了は @ref IsDestroyJointSessionCompleted でチェックし、結果は @ref GetDestroyJointSessionResult で確認できます。
2463 
2464  ホストが本関数でジョイントセッションの解散処理を開始した場合、同行者側でも解散の内部処理が自動的に開始されます。
2465  自動的に開始された処理の進捗は、状態変化イベント通知をハンドリングするか @ref GetStatus で取得できる @ref Status をチェックすることで確認できます。
2466 
2467  非同期処理中は、送受信処理関連など一部の API は一時的に使用できません。
2468 
2469  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2470 
2471  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2472  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2473 
2474  @see IsDestroyJointSessionCompleted, GetDestroyJointSessionResult
2475  */
2477 
2478  /*!
2479  @brief DestroyJointSessionAsync の非同期処理の完了をチェックします。
2480  @details この関数はローカル通信では使用できません。

2481  @ref DestroyJointSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
2482 
2483  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2484 
2485  @see DestroyJointSessionAsync, GetDestroyJointSessionResult
2486  */
2487  bool IsDestroyJointSessionCompleted() const;
2488 
2489  /*!
2490  @brief DestroyJointSessionAsync の非同期処理の結果を取得します。
2491  @details この関数はローカル通信では使用できません。

2492  @ref DestroyJointSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2493 
2494  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2495 
2496  @retval nn::pia::ResultInvalidState 処理可能な状態では無かった場合に返ります。また、非同期処理が完了していない場合、もしくは開始されていない場合にも返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2497  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2498  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2499  @retval nn::pia::ResultGameServerMaintenance ゲームサーバーのメンテナンスが行われています。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2500  @retval nn::pia::ResultCompanionStationIsOffline 同行するクライアントがゲームサーバにログインしていない状態でした。クリーンアップ処理を実行してください。
2501  @retval nn::pia::ResultCompanionStationIsLeft 同行するクライアントとの接続が切断しました。クリーンアップ処理を実行してください。
2502  @retval nn::pia::ResultSessionMigrationFailed セッション移行処理に失敗しました。クリーンアップ処理を実行してください。
2503  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2504  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2505  @if NIN_DOC
2506  @retval nn::pia::ResultUserAccountNotExisted ユーザーアカウントが存在しませんでした。クリーンアップ処理を実行してください。
2507  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2508  @endif
2509 
2510  @see DestroyJointSessionAsync, IsDestroyJointSessionCompleted
2511  */
2513 
2514  // ジョイントセッション参加受付開始
2515  /*!
2516  @brief ジョイントセッションの参加受付を開始します。
2517  @details この関数はローカル通信では使用できません。

2518  ジョイントセッションホストのみ使用可能です。
2519  ジョイントセッション参加受付を開始する非同期処理を開始します。
2520  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2521  処理の完了は @ref IsOpenJointSessionCompleted でチェックし、結果は @ref GetOpenJointSessionResult で確認できます。<br>
2522  UpdateSessionSetting の派生クラスのインスタンスを引数に指定する場合、参加受付の開始と同時にジョイントセッションの設定を更新します。
2523 
2524  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2525 
2526  @retval nn::pia::ResultInvalidArgument 非同期処理開始時に渡した引数の設定内容が想定外です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2527  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、ジョイントセッション参加状態であること、ジョイントセッションホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2528 
2529  @see IsOpenJointSessionCompleted, GetOpenJointSessionResult, IsJointSessionHost
2530  */
2531  Result OpenJointSessionAsync(const UpdateSessionSetting* pUpdateSessionSetting = NULL);
2532 
2533  /*!
2534  @brief OpenJointSessionAsync の非同期処理の完了をチェックします。
2535  @details この関数はローカル通信では使用できません。

2536  @ref OpenJointSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
2537 
2538  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2539 
2540  @see OpenJointSessionAsync, GetOpenJointSessionResult
2541  */
2542  bool IsOpenJointSessionCompleted() const;
2543 
2544  /*!
2545  @brief OpenJointSessionAsync の非同期処理の結果を取得します。
2546  @details この関数はローカル通信では使用できません。

2547  @ref OpenJointSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2548 
2549  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2550 
2551  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2552  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2553  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
2554  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
2555  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2556  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2557  @if NIN_DOC
2558  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2559  @endif
2560 
2561  @see OpenJointSessionAsync, IsOpenJointSessionCompleted
2562  */
2564 
2565  // ジョイントセッション参加締め切り
2566  /*!
2567  @brief ジョイントセッションの参加締切を行います。
2568  @details この関数はローカル通信では使用できません。

2569  ジョイントセッションホストのみ使用可能です。
2570  ジョイントセッション参加を締め切る非同期処理を開始します。
2571  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2572  処理の完了は @ref IsCloseJointSessionCompleted でチェックし、結果は @ref GetCloseJointSessionResult で確認できます。
2573  <br>
2574  本関数の呼び出し直前にジョイントセッションに新規参加しようとしているステーションが非同期処理完了後に参加してくる可能性があるため、
2575  セッション参加締切後、マッチメイクセッションとメッシュの参加者数が一致するまで待ってから非同期処理を完了します。
2576  また、一定期間(15秒)経過しても一致しない場合も非同期処理を完了します。この場合、@ref GetCloseJointSessionResult は
2577  ResultNegligibleFault を返します。非同期処理完了後に新規参加してくる可能性がありますので、アプリケーションで適切にハンドリング
2578  する必要があります。
2579 
2580 
2581  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2582 
2583  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないこと、Startup が呼び出されていること、ジョイントセッション参加状態であること、ジョイントセッションホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2584 
2585  @see IsCloseJointSessionCompleted, GetCloseJointSessionResult, IsJointSessionHost
2586  */
2588 
2589  /*!
2590  @brief CloseJointSessionAsync の非同期処理の完了をチェックします。
2591  @details この関数はローカル通信では使用できません。

2592  @ref CloseJointSessionAsync で開始された非同期処理は、本関数で完了をチェックできます。
2593 
2594  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2595 
2596  @see CloseJointSessionAsync, GetCloseJointSessionResult
2597  */
2598  bool IsCloseJointSessionCompleted() const;
2599 
2600  /*!
2601  @brief CloseJointSessionAsync の非同期処理の結果を取得します。
2602  @details この関数はローカル通信では使用できません。

2603  @ref CloseJointSessionAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2604 
2605  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2606 
2607  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2608  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2609  @retval nn::pia::ResultSessionConnectionIsLost メッシュから切断されました。LeaveSessionAsync を呼び出した後、クリーンアップ処理を実行してください。
2610  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
2611  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2612  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2613  @retval nn::pia::ResultNegligibleFault マッチメイクセッションとメッシュの参加人数が一致しない状態で一定時間経過しました。アプリケーションで適切にハンドリングしてください。
2614  @if NIN_DOC
2615  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2616  @endif
2617 
2618  @see CloseJointSessionAsync, IsCloseJointSessionCompleted
2619  */
2621 
2622  /*!
2623  @brief ジョイントセッションの設定を更新します。
2624  @details この関数はローカル通信では使用できません。

2625  非同期にジョイントセッションの設定を更新します。
2626  ジョイントセッションホストであるときに実行できます。
2627  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2628  処理の完了は @ref IsUpdateJointSessionSettingCompleted でチェックし、結果は @ref GetUpdateJointSessionSettingResult で確認できます。
2629 
2630  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2631 
2632  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。ローカル通信では対応していません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2633  インターネット通信時は他の非同期処理が行われていないこと、Startup が呼び出されていること、ジョイントセッションホストであることを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2634 
2635  @param[in] pUpdateSessionSetting 変更する設定をまとめる UpdateSessionSetting 派生クラスのポインタ
2636 
2637  @see UpdateSessionSetting, IsUpdateJointSessionSettingCompleted, GetUpdateJointSessionSettingResult, IsJointSessionHost
2638  */
2639  Result UpdateJointSessionSettingAsync(const UpdateSessionSetting* pUpdateSessionSetting);
2640 
2641  /*!
2642  @brief UpdateJointSessionSettingAsync の非同期処理の完了をチェックします。
2643  @details この関数はローカル通信では使用できません。

2644  @ref UpdateJointSessionSettingAsync で開始された非同期処理は、本関数で完了をチェックできます。
2645 
2646  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2647 
2648  @see UpdateJointSessionSettingAsync, GetUpdateJointSessionSettingResult
2649  */
2651 
2652  /*!
2653  @brief UpdateJointSessionSettingAsync の非同期処理の結果を取得します。
2654  @details この関数はローカル通信では使用できません。

2655  @ref UpdateJointSessionSettingAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2656 
2657  @return IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2658 
2659  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。他の非同期処理が行われていないことを確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2660  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2661  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
2662  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2663  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2664  @if NIN_DOC
2665  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2666  @endif
2667 
2668  @see UpdateJointSessionSettingAsync, IsUpdateJointSessionSettingCompleted
2669  */
2671 
2672  /*!
2673  @brief ジョイントセッションのセッション ID を取得します。
2674 
2675  @ifnot CAFE_DOC
2676  @details ローカル通信の時は、常に InvalidSessionId を返します。
2677  @endif
2678 
2679  @return 現在参加しているジョイントセッションのセッション ID を返します。ジョイントセッションに参加していない状態では InvalidSessionId を返します。
2680  */
2681  uint32_t GetJointSessionId() const;
2682 
2683  /*!
2684  @brief 自分自身がジョイントセッションのホストであるかどうかを取得します。
2685  @details この関数はジョイントセッションのホストであるかどうかを返します。
2686 
2687  @return 自分自身がホストの場合は true、そうでない場合は false が返ります。
2688  */
2689  bool IsJointSessionHost() const;
2690 
2691  /*!
2692  @cond PRIVATE
2693  @brief ジョイントセッションホストを示す StationIndex を取得します
2694 
2695  @details ジョイントセッション参加中でない場合、この関数は StationIndex_Invalid を返します。
2696  ジョイントセッション参加中の場合、この関数はジョイントセッションのホストを示す StationIndex を返します。
2697 
2698  @return 自身が参加しているジョイントセッションのホストを示す StationIndex を返します。
2699  */
2700  StationIndex GetJointSessionHostStationIndex() const;
2701  //! @endcond
2702 
2703  /*!
2704  @brief ジョイントセッションのホストを示す StationId を取得します。
2705 
2706  @details ジョイントセッション参加中でない場合、この関数は StationIdInvalid を返します。
2707  ジョイントセッション参加中の場合、この関数はジョイントセッションのホストを示す StationId を返します。
2708 
2709  @return ジョイントセッションのホストを示す StationId を返します。
2710  */
2712 
2713  /*!
2714  @brief 自身が参加しているジョイントセッションのホストを示す StationConnectionInfo を取得します。
2715 
2716  @details ジョイントセッション参加中の場合、この関数はジョイントセッションのホストを示す StationConnectionInfo を返します。
2717  <br>
2718  @param[out] pInfoOut 取得したジョイントセッションホストを示すアドレスの格納先を示すポインタ
2719  @return 成功すれば、 IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
2720  @retval ResultInvalidArgument 引数に誤りがあります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2721  @retval ResultInvalidState ジョイントセッションに参加していません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2722 
2723  @return 自身が参加しているジョイントセッションのホストを示す StationConnectionInfo を返します。
2724  */
2726 
2727  /*!
2728  @brief ジョイントセッションの参加募集状態を取得します。
2729  @details ジョイントセッションホストのみ使用可能です。
2730  @return ジョイントセッションの参加募集状態を返します。
2731  @see IsJointSessionHost
2732  */
2734 
2735  /*!
2736  @brief 参加中のジョイントセッションのセッション情報を取得します。
2737  @details セッション情報は自動的には更新されません。セッション情報の更新は @ref RequestJointSessionInfoAsync で行う必要があります。
2738  @return 参加中のジョイントセッションのセッション情報を返します。
2739  */
2740  const ISessionInfo* GetJointSessionInfo() const;
2741 
2742  /*!
2743  @brief 参加中のジョイントセッションのセッション情報の取得要求を行います。
2744  @details 参加中のジョイントセッションのセッション情報の取得要求を行う非同期処理を開始します。
2745  開始した処理は @ref common::Scheduler::Dispatch を定期的に呼び出すことで進行します。
2746  処理の完了は @ref IsRequestJointSessionInfoCompleted でチェックし、結果は @ref GetRequestJointSessionInfoResult で確認できます。
2747  非同期処理が成功していた場合は、@ref GetJointSessionInfo でセッション情報を取得できますが、非同期処理中にジョイントセッションホストが UpdateJointSessionSettingAsync でセッション情報を更新した場合、
2748  取得する情報が更新前の情報となる場合があります。
2749  <br>
2750  インターネット通信の場合、ゲームサーバーアクセスを行います。1 分間に 10 回以上の呼び出しを行ってはいけません。
2751  @return 非同期処理の開始に成功すれば、成功の Result が返されます。失敗した場合、以下の Result を返します。
2752  @retval nn::pia::ResultInvalidState 呼び出し時に適切な状態ではありませんでした。セッションに参加していないか、他の非同期処理が行われていないか確認してください。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2753 
2754  @see IsRequestJointSessionInfoCompleted, GetRequestJointSessionInfoResult
2755 
2756  */
2758 
2759  /*!
2760  @brief RequestJointSessionInfoAsync の非同期処理の完了をチェックします。
2761  @details @ref RequestJointSessionInfoAsync で開始された非同期処理は、本関数で完了をチェックできます。
2762 
2763  @return 非同期処理が完了していた場合は true, 処理中の場合は false が返ります。非同期処理が行われていない場合も false が返ります。
2764  @see RequestJointSessionInfoAsync, GetRequestJointSessionInfoResult
2765  */
2767 
2768  /*!
2769  @brief RequestJointSessionInfoAsync の非同期処理の結果を取得します。
2770  @details @ref RequestJointSessionInfoAsync で開始された非同期処理が完了した後、本関数で結果を取得できます。
2771 
2772  @return 非同期処理が成功した場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2773 
2774  @retval nn::pia::ResultInvalidState 非同期処理が完了していない場合、もしくは開始されていない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2775  @retval nn::pia::ResultSessionIsNotFound 非同期処理途中で対象のセッションが消失しました。クリーンアップ処理を実行してください。
2776  @retval nn::pia::ResultNetworkConnectionIsLost ネットワークが使用できない状態になっています。無線スイッチOffや、アクセスポイントの障害、ゲームサーバーとの接続の切断などの原因が考えられます。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。クリーンアップ処理、NEX サーバーからのログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。
2777  @retval nn::pia::ResultNexInternalError NEX の内部エラーです。nn::pia::Result::GetErrorCode() で取得できるエラーコードは NEX のものになります。エラーコードリストの NEX の項目をご確認ください。クリーンアップ処理、NEX サーバーからのログアウト処理、ネットワークのシャットダウン処理、終了処理を順に実行してください。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。アプリケーションで適切にハンドリングしてください。
2778  @retval nn::pia::ResultGameServerProcessAborted ゲームサーバーに関する処理が異常終了しました。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2779  @if NIN_DOC
2780  @retval nn::pia::ResultNetworkConnectionIsLostByDuplicateLogin 他の端末からの同一アカウントでのログインによりゲームサーバーから切断され、非同期処理が中断されました。インターネット通信でこのエラーが発生した場合は、ネットワークエラーコードに変換し、エラー・EULA アプレットで表示してください。ですが、ローカル通信時にはエラー・EULA アプレットでエラーコード付きのエラー表示は行わないでください。セッション離脱処理、クリーンアップ処理、NEX サーバーからのログアウト処理を順に実行してください。
2781  @endif
2782  */
2784 
2785  /*!
2786  @cond PRIVATE
2787  */
2788  int GetJointSequence() const;
2789  //! @endcond
2790 
2791  /*!
2792  @cond PRIVATE
2793  */
2794  int GetJoinSequence() const;
2795  int GetJoinAutoMatchmakeSequence() const;
2796  int GetJoinMeshSequence() const;
2797  //! @endcond
2798 
2799  /*!
2800  end of name ジョイントセッション機能
2801  @}
2802  */
2803 
2804 
2805  /*!
2806  @name コールバック関数の登録/登録解除
2807  @{
2808  */
2809 
2810  /*!
2811  @brief セッションの状態が変化した場合に呼び出されるコールバック関数を登録します
2812 
2813  @details セッションの状態変化(ステーション参加/離脱)発生時に呼び出されるコールバック関数を登録します。
2814  登録する関数内には長時間ブロックするような処理を記述してはいけません。
2815 
2816  @param[in] callback 登録するコールバック関数へのポインタを指定します。
2817  @param[in] pApplicationParam コールバック関数の引数として渡されるパラメータへのポインタを指定します。指定しない場合はパラメータ無し(NULL)となります。
2818 
2819  @return 正常に処理できた場合、 IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
2820  @retval nn::pia::ResultInvalidState 既にイベント通知コールバックを登録済みの場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2821 
2822  @see UnregisterSessionEventCallback
2823  */
2824  Result RegisterSessionEventCallback(SessionEventCallback callback, void* pApplicationParam = NULL);
2825 
2826  /*!
2827  @brief 登録されているセッション状態変化コールバック関数を登録解除します。
2828 
2829  @see RegisterSessionEventCallback
2830  */
2832 
2833 
2834  /// @cond PRIVATE
2835  static void NoticeEventCallback(Session::EventType eventType, StationIndex index);
2836 
2837  void CheckStatusAtChangeMeshState();
2838  /// @endcond
2839 
2840  /*!
2841  @brief セッションホストで参加要求が来た際に呼び出される承認/拒否判定コールバック関数を登録します
2842 
2843  @details 自分がセッションホストで、クライアントから参加要求を受け取った場合に呼び出されるコールバックです。
2844  コールバック関数は、@ref common::Scheduler::Dispatch の内部で呼び出されます。
2845  登録する関数内には長時間ブロックするような処理を記述してはいけません。
2846 
2847  @param[in] callback 登録するコールバック関数へのポインタを指定します。
2848 
2849  @see UnregisterJoiningApprovalCallback
2850  */
2852 
2853  /*!
2854  @brief 登録されている参加要求が来た際に呼び出される承認/拒否判定コールバック関数の登録を解除します。
2855 
2856  @see RegisterJoiningApprovalCallback
2857  */
2859 
2860  //! @cond PRIVATE
2861  static bool SessionJoiningApprovalCallback(const transport::Station::IdentificationToken* pRequesterToken);
2862  MeshEventListener* GetMeshEventListenerPtr();
2863  transport::Transport::DisconnectionEventListener GetDisconnectionEventListener();
2864  static uint8_t CheckHostCandidateRankingCallback(StationIndex targetStationIndex, bool isHost);
2865  static uint32_t GetSessionIdCallback();
2866  //! @endcond
2867 
2868  /*!
2869  end of name コールバック関数の登録/登録解除
2870  @}
2871  */
2872 
2873  /// @cond PRIVATE
2874  // private
2875  void JoinNotice(StationId targetStationId);
2876  /// @endcond
2877 
2878  /*!
2879  @name 同期クロック
2880  @{
2881  */
2882 
2883  /*!
2884  @brief セッション作成時刻からの経過時間(同期クロック)をミリ秒で返します。
2885 
2886  @details 同期クロックは、セッションに参加している Station 間で同期される時計です。
2887  セッションに参加したクライアントは、定期的に時刻同期パルスをセッションホストに送信します。
2888  ホストがこのパルスに応答することで、ホストと各クライアントの時刻同期が実現されます。
2889  この同期パルス送信間隔はデフォルトで 2 秒ですが、アプリケーションがこの値を
2890  変更することもできます。詳しくは SetSyncClockPulseInterval(), GetSyncClockPulseInterval()
2891  を参照してください。
2892 
2893  @return セッション作成時刻からの経過時間をミリ秒で返します。
2894  セッション参加直後など、ホストからの応答がまだ返されておらず、
2895  セッションホストとの同期が取れていないタイミングでこの API を
2896  呼び出したときは、負の値が返されます。
2897 
2898  @see SetSyncClockPulseInterval, GetSyncClockPulseInterval
2899  */
2900  int64_t GetTime(void) const;
2901 
2902 
2903  /*!
2904  @brief 同期クロックの同期パルス送信間隔を指定します。
2905 
2906  @param[in] interval 同期パルス送信の時間間隔です。単位はミリ秒です。
2907  @see GetTime, GetSyncClockPulseInterval
2908  */
2909  void SetSyncClockPulseInterval(int32_t interval);
2910 
2911 
2912  /*!
2913  @brief 同期クロックの同期パルス送信間隔を取得します。
2914 
2915  @return 同期パルス送信間隔を取得します。単位はミリ秒です。
2916  @see GetTime, SetSyncClockPulseInterval
2917  */
2918  int32_t GetSyncClockPulseInterval(void) const;
2919 
2920  /*!
2921  end of name 同期クロック
2922  @}
2923  */
2924 
2925  /*!
2926  @name リレー通信機能
2927  @{
2928  */
2929 
2930  /*!
2931  @brief リレー接続有効時に、ステーション1台に割り当てられる転送依頼数の最大制限値を設定します。
2932 
2933  @details リレー接続経路探索&決定時の指標として本関数で設定された制限値を利用します。<br>
2934  設定変更しない場合のデフォルト値は "[セッション最大参加数] * [セッション最大参加数]" です。<br>
2935 
2936  同じセッションへの参加者は全員同じ値を設定することを推奨します。(異なる値を設定した場合は動作保証外とします)
2937 
2938  リレー接続が有効なネットワークトポロジーの場合かつ @ref Startup 前にのみ使用可能です。
2939 
2940  @param[in] num 設定したい最大制限値を指定します。
2941 
2942  @return 正常に設定できた場合、成功の Result が返されます。
2943  @retval nn::pia::ResultInvalidState リレー接続が有効ではない、もしくは既に Startup 呼出後の場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2944  */
2946 
2947 
2948  /*!
2949  @brief リレー接続有効時に、1つのリレー接続経路の合計 RTT の最大制限値を設定します。
2950 
2951  @details リレー接続経路探索&決定時の指標として本関数で設定された制限値を利用します。<br>
2952  設定変更しない場合のデフォルト値は session::SessionMaxRttDefault です。<br>
2953 
2954  同じセッションへの参加者は全員同じ値を設定することを推奨します。(異なる値を設定した場合は動作保証外とします)
2955 
2956  リレー接続が有効なネットワークトポロジーの場合かつ @ref Startup 前にのみ使用可能です。
2957 
2958  @param[in] rtt 設定したい最大制限値を指定します。単位は msec です。
2959 
2960  @return 正常に設定できた場合、成功の Result が返されます。
2961  @retval nn::pia::ResultInvalidState リレー接続が有効ではない、もしくは既に Startup 呼出後の場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2962  */
2963  Result SetMaxRtt(uint16_t rtt);
2964 
2965  /*!
2966  @brief (デバッグ用)リレー接続有効時に、任意の StationIndex と自分自身との接続経路情報を取得します。
2967 
2968  @details 本関数はデバッグ用です。製品には組み込まないようお願いします。<br>
2969  自分自身と targetId のステーションとの接続経路情報について、以下の規則で pRelayId へ格納します。
2970  (接続経路情報が取得できなかった場合は pRelayId の値を変更することはありません)
2971  <ul>
2972  <li>直通接続の場合 : targetId</li>
2973  <li>リレー接続の場合 : リレー依頼先ステーションの StationId</li>
2974  <li>自分自身の場合 : StationIdInvalid</li>
2975  </ul>
2976 
2977  @details 内部処理の状態により接続経路情報の取得に失敗する場合があります。
2978  この状態になるのは一時的であり、内部処理が正常に進行した後は正しく取得できるようになります。
2979 
2980  @param[in] targetId 接続経路を取得したい対象の StationId を指定します。
2981  @param[out] pRelayId 接続経路情報を示す StationId が格納されます。
2982 
2983  @return 正常に取得できた場合、成功の Result が返されます。
2984  @retval nn::pia::ResultInvalidState リレー接続が有効ではない場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2985  @retval nn::pia::ResultInvalidArgument 対象の StationId が有効な値ではない場合、もしくは引数で指定されたポインタが有効ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
2986  @retval nn::pia::ResultNotFound 接続経路情報を取得できませんでした。対象のステーションはセッションに参加していません。アプリケーションで適切にハンドリングしてください。
2987  @retval nn::pia::ResultTemporaryUnavailable 接続経路情報を取得できませんでした。ジョイントセッション処理が進行中のため、一時的に API を利用できない状態です。アプリケーションで適切にハンドリングしてください。
2988  */
2989  Result GetConnectionRoute(StationId targetId, StationId* pRelayId);
2990 
2991  /*!
2992  @brief (デバッグ用)リレー接続有効時に、任意の StationIndex 間の接続経路エミュレーション設定を指定します。
2993 
2994  @details 本関数はデバッグ用です。製品には組み込まないようお願いします。
2995 
2996  @details 本関数を使用する場合は @ref Session::SetDebugSetting で接続経路エミュレーション機能が有効となるように設定します。
2997 
2998  @details 対象の StationIndex 間の接続方法は(たとえ実際には直通接続ができる場合でも)必ずリレー接続となります。
2999 
3000  @details 本関数はセッションに接続していないタイミングで呼び出します。
3001  セッション参加済みの状態で接続経路エミュレーション設定を変更することは動作保証外とします。
3002 
3003  @param[in] index1 対象の StationIndex を指定します。
3004  @param[in] index2 対象の StationIndex を指定します。
3005 
3006  @return 正常に設定できた場合、成功の Result が返されます。
3007  @retval nn::pia::ResultInvalidState リレー接続が有効ではない場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
3008  @retval nn::pia::ResultInvalidArgument 対象の StationIndex が有効な値ではない場合に返ります。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
3009 
3010  @see SetDebugSetting, ResetRelayEmulation
3011  */
3013 
3014  /*!
3015  @brief (デバッグ用)リレー接続有効時に、接続経路エミュレーション設定を初期化します。
3016 
3017  @details 本関数はデバッグ用です。製品には組み込まないようお願いします。
3018 
3019  @details @ref RelayEmulation を使用して設定された接続経路エミュレーションについて全て初期化します。
3020  (全ての StationIndex の組み合わせに対して EmulationType_None を設定した状態と同等です)
3021 
3022  @details 本関数はセッションに接続していないタイミングで呼び出します。
3023  セッション参加済みの状態で接続経路エミュレーション設定を変更することは動作保証外とします。
3024 
3025  @see SetDebugSetting, RelayEmulation
3026  */
3027  void ResetRelayEmulation();
3028 
3029  /*!
3030  end of name リレー通信機能
3031  @}
3032  */
3033 
3034  /*!
3035  @name その他
3036  @{
3037  */
3038 
3039  /*!
3040  @brief ホストマイグレーションが有効になっているかを取得します。
3041 
3042  @details session::Session::Startup の引数に設定した値により返る値が決定します。
3043  @return ホストマイグレーションが有効な設定で @ref session::Session::Startup を呼び出していた場合は true が返ります。
3044 
3045  */
3046  bool IsHostMigrationEnabled() const;
3047 
3048  /// @cond PRIVATE
3049  /*!
3050  @brief セッションから任意のステーションを追放します。(ホスト専用)
3051 
3052  @details ホストのみ使用可能です。
3053 
3054  @details 引数で指定した StationIndex が割り当てられたステーションへ追放通知を伝達し、
3055  追放通知を受けた対象のステーションではセッション離脱処理が行われます。
3056 
3057  @details 追放通知の通信遅延などが原因で、この関数呼出に成功した後実際にセッションから離脱するまでにある程度の時間がかかる場合があります。
3058 
3059  @param[in] index 追放したいステーションに割り当てられている StationIndex を指定します。
3060 
3061  @return 正常にセッションからのステーション追放処理を実行できた場合、IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
3062  @retval nn::pia::ResultInvalidState ホスト以外が呼び出した場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
3063  @retval nn::pia::ResultInvalidArgument 引数で指定された StationIndex が、ホスト自身を示す Id やセッションに参加していない Id だった場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
3064  @retval nn::pia::ResultBufferIsFull 追放処理管理用バッファもしくは追放通知送信用バッファに空きが無かった場合に返されます。時間をあけてから再度実行すれば、成功する可能性があります。アプリケーションで適切にハンドリングしてください。
3065  */
3067  /// @endcond
3068 
3069  /*!
3070  @brief セッションから任意のステーションを追放します。(ホスト専用)
3071 
3072  @details ホストのみ使用可能です。
3073 
3074  @details 引数で指定した StationId が割り当てられたステーションへ追放通知を伝達し、
3075  追放通知を受けた対象のステーションではセッション離脱処理が行われます。
3076 
3077  @details 追放通知の通信遅延などが原因で、この関数呼出に成功した後実際にセッションから離脱するまでにある程度の時間がかかる場合があります。
3078 
3079  @param[in] id 追放したいステーションに割り当てられている StationId を指定します。
3080 
3081  @return 正常にセッションからのステーション追放処理を実行できた場合、IsSuccess() が真となる Result を返します。失敗した場合、以下の Result を返します。
3082  @retval nn::pia::ResultInvalidState ホスト以外が呼び出した場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
3083  @retval nn::pia::ResultInvalidArgument 引数で指定された StationId が、ホスト自身を示す Id やセッションに参加していない Id だった場合に返されます。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
3084  @retval nn::pia::ResultBufferIsFull 追放処理管理用バッファもしくは追放通知送信用バッファに空きが無かった場合に返されます。時間をあけてから再度実行すれば、成功する可能性があります。アプリケーションで適切にハンドリングしてください。
3085  */
3087 
3088  /*!
3089  @brief メッシュが通信不可能となった理由を取得します。
3090 
3091  @details メッシュが通信可能な状態だった場合は、常に UNKNOWN_REASON が返されます。
3092 
3093  @return メッシュが通信不可能となった理由を表す DisconnectReason
3094 
3095  @see CheckConnectionError
3096  */
3098 
3099  /*!
3100  @brief デバッグに有用な情報をプリントします。
3101 
3102  @param[in] flag トレースフラグの論理和。詳細は @ref TraceFlag 型を参照してください。
3103  */
3104  virtual void Trace(uint64_t flag) const;
3105 
3106  /*!
3107  @brief マッチメイク分析機能のセッション参加承認コールバックの不整合検知判定で使用する transport::Station::IdentificationToken を設定します。
3108 
3109  @param[in] pToken セッション参加承認コールバックの不整合検知判定で使用するトークン
3110  */
3112 
3113  /*!
3114  end of name その他
3115  @}
3116  */
3117 
3118 
3119  /// @cond PRIVATE
3120  bool SaveWaitingStationIndex();
3121  uint32_t UpdateWaitingStationIndexNum();
3122  void SetWaitingOtherClientsFlag(bool flag);
3123  /// @endcond
3124 
3125  /// @cond PRIVATE
3126  IMatchmakeSession* GetCurrentMatchmakeSession()
3127  {
3128  return m_pMatchmakeSessionPtrArray[CurrentMatchmakeSessionIndex()];
3129  }
3130  IMatchmakeSession* GetBufferMatchmakeSession()
3131  {
3132  return m_pMatchmakeSessionPtrArray[BufferMatchmakeSessionIndex()];
3133  }
3134  const IMatchmakeSession* GetCurrentMatchmakeSession() const
3135  {
3136  return m_pMatchmakeSessionPtrArray[CurrentMatchmakeSessionIndex()];
3137  }
3138  const IMatchmakeSession* GetBufferMatchmakeSession() const
3139  {
3140  return m_pMatchmakeSessionPtrArray[BufferMatchmakeSessionIndex()];
3141  }
3142  ISessionInfoList* GetSessionInfoListPtr()
3143  {
3144  return m_pSessionInfoList;
3145  }
3146  ICommunityInfoList* GetCommunityInfoListPtr()
3147  {
3148  return m_pCommunityInfoList;
3149  }
3150  uint32_t GetCurrentSessionId() const
3151  {
3152  return m_SessionId[CurrentMatchmakeSessionIndex()];
3153  }
3154  uint32_t GetBufferSessionId() const
3155  {
3156  return m_SessionId[BufferMatchmakeSessionIndex()];
3157  }
3158  uint16_t GetCurrentMaxParticipantNum() const
3159  {
3160  return m_MaxParticipantNum[CurrentMatchmakeSessionIndex()];
3161  }
3162  uint16_t GetBufferMaxParticipantNum() const
3163  {
3164  return m_MaxParticipantNum[BufferMatchmakeSessionIndex()];
3165  }
3166  SessionOpenStatus GetCurrentSessionOpenStatus() const
3167  {
3168  return m_SessionOpenStatus[CurrentMatchmakeSessionIndex()];
3169  }
3170  SessionOpenStatus GetBufferSessionOpenStatus() const
3171  {
3172  return m_SessionOpenStatus[BufferMatchmakeSessionIndex()];
3173  }
3174 
3175  // n2908: ジョイントセッションを使用できるネットワーク種別かどうかを確認する
3176  bool IsJointSessionEnabled() const
3177  {
3178  return (m_pJointSessionJob != NULL);
3179  }
3180 
3181  bool IsLeaveIgnorable() const
3182  {
3183  return m_LeaveIgnorableFlag;
3184  }
3185  bool IsPostponeJoinEvent() const
3186  {
3187  return m_PostponeJoinEventFlag;
3188  }
3189  ModuleState GetModuleState() const
3190  {
3191  return m_ModuleState;
3192  }
3193  ProcessType GetJointSessionProcessType() const;
3194  void SetHostMigrationOccurred(bool b);
3195  bool IsHostMigrationOccurred() const;
3196  transport::Station::IdentificationToken* GetMatchmakeAnalysisToken();
3197  void NotifyOwnershipChange(uint32_t sessionId, PrincipalId ownerId);
3198  void NotifyLeave(uint32_t sessionId, PrincipalId principalId);
3199  void NotifyUnregister(uint32_t sessionId);
3200  bool IsPlayersCountedAsParticipants() const;
3201  uint8_t GetLocalPlayerCount() const;
3202  uint16_t GetParticipantNum() const;
3203  void UpdateSessionStationInfo();
3204  common::AsyncContext* GetInternalAsyncContext();
3205  bool IsPreparedForCleanup() const;
3206  /// @endcond
3207 
3208 #if NN_PIA_NINTENDOSDK && NN_PIA_ENABLE_NSA
3209  //! @cond PRIVATE
3210  struct PlayerHistory
3211  {
3212  char screenNameBuffer[MaxPlayerNameLength * common::MultiByteCharMaxSize + 1];
3213  uint8_t screenNameSize;
3214  uint8_t screenNameEncodingType;
3215  uint8_t nameStringLanguage;
3216  transport::Station::PlayerRegistrationKey registrationKey;
3217  };
3218  //! @endcond
3219  typedef common::ObjList<PlayerHistory> PlayerHistoryList;
3220 #endif
3221 
3222 protected:
3223  bool IsProcessingJoin() const;
3224  bool IsWaitingOtherClients() const;
3225  bool IsPostponeNotice() const;
3226  bool IsProcessingLeave() const;
3227 
3228 private:
3229  //! @cond PRIVATE
3230  /*
3231  @brief コンストラクタです。シングルトンパターンのため、コンストラクタは封印します。
3232  */
3233  Session(const Setting& setting);
3234 
3235 
3236  /*!
3237  @brief デストラクタです。シングルトンパターンのため、デストラクタは封印します
3238  */
3239  virtual ~Session();
3240 
3241  /*!
3242  @brief シングルトンパターンのため、コピーコンストラクタは封印します。
3243  */
3244  Session(const Session&);
3245 
3246 
3247  /*!
3248  @brief シングルトンパターンのため、代入演算子は封印します。
3249  */
3250  Session& operator=(const Session&);
3251  //! @endcond
3252 
3253  bool UpdateStationIdToBecomeHost();
3254  bool UpdateStationIdToBecomeClient();
3255 
3256  bool AddNewStationId(StationId stationId, StationIndex stationIndex, PrincipalId uniqueId, uint32_t sessionId);
3257  bool RemoveStationId(StationId stationId, StationIndex stationIndex, PrincipalId uniqueId, uint32_t sessionId);
3258 
3259  void CleanupStatus(bool isPostponeCleanupLocalStationId = false);
3260 
3261  void ChangeStatusToDisconnectedSession();
3262  void ChangeStatusToDisconnectedNetwork();
3263 
3264  void CancelJoinProcessByFatalError();
3265 
3266  // シングルトンインスタンスへのポインタです。
3267  static Session* s_pInstance;
3268 
3269  static DebugSetting s_DebugSetting;
3270 
3271  bool m_IsNecessaryServer;
3272 
3273  MeshLayerController* m_pMeshLayerController;
3274 
3275  SessionStatusCheckJob* m_pSessionStatusCheckJob;
3276  CreateSessionJob* m_pCreateSessionJob;
3277  AutoMatchmakeJob* m_pAutoMatchmakeJob;
3278  BrowseMatchmakeJob* m_pBrowseMatchmakeJob;
3279  JoinSessionJob* m_pJoinSessionJob;
3280  LeaveSessionJob* m_pLeaveSessionJob;
3281  DestroySessionJob* m_pDestroySessionJob;
3282  OpenParticipationJob* m_pOpenParticipationJob;
3283  CloseParticipationJob* m_pCloseParticipationJob;
3284 
3285  GenerateMatchmakeSystemPasswordJob* m_pGenerateMatchmakeSystemPasswordJob;
3286  ClearMatchmakeSystemPasswordJob* m_pClearMatchmakeSystemPasswordJob;
3287 
3288  common::String* m_pSessionPassword;
3289 
3290  JointSessionJob* m_pJointSessionJob;
3291 
3292  UpdateSessionSettingJob* m_pUpdateSessionSettingJob;
3293  UpdateApplicationDataJob* m_pUpdateApplicationDataJob;
3294 
3295  CommunityManagementJob* m_pCommunityManagementJob;
3296 
3297  SessionSearchCriteria* m_pPrimarySessionSearchCriteria;
3298  SessionSearchCriteria* m_pSecondarySessionSearchCriteria;
3299 
3300  SessionEventCallback m_SessionEventCallback;
3301  void* m_pSessionEventParam;
3302  JoiningApprovalCallback m_JoiningApprovalCallback;
3303 
3304  StationIdStatusTable* m_pStationIdStatusTable;
3305 
3306  uint32_t m_SessionProtocolHandle;
3307  SessionProtocol* m_pSessionProtocol;
3308 
3309  ModuleState m_ModuleState;
3310  MatchmakeStatus m_MatchmakeStatus;
3311 
3312  ConnectionStatus m_ConnectionStatus;
3313 
3314  StationId m_LocalStationId;
3315  StationId m_HostStationId;
3316  StationId m_JointSessionHostStationId;
3317 
3318  PrincipalId m_PrincipalId;
3319 
3320  enum AsyncProcessingName
3321  {
3322  AsyncProcessingName_Nothing = 0,
3323  AsyncProcessingName_JoinRandomSession,
3324  AsyncProcessingName_BrowseSession,
3325  AsyncProcessingName_CreateSession,
3326  AsyncProcessingName_JoinSession,
3327  AsyncProcessingName_LeaveSession,
3328  AsyncProcessingName_OpenSession,
3329  AsyncProcessingName_CloseSession,
3330  AsyncProcessingName_GenerateMatchmakeSystemPassword,
3331  AsyncProcessingName_ClearMatchmakeSystemPassword,
3332  AsyncProcessingName_CreateJointSession,
3333  AsyncProcessingName_JoinJointSession,
3334  AsyncProcessingName_JoinRandomJointSession,
3335  AsyncProcessingName_DestroyJointSession,
3336  AsyncProcessingName_LeaveJointSession,
3337  AsyncProcessingName_OpenJointSession,
3338  AsyncProcessingName_CloseJointSession,
3339  AsyncProcessingName_UpdateSessionSetting,
3340  AsyncProcessingName_UpdateJointSessionSetting,
3341  AsyncProcessingName_CreateCommunity,
3342  AsyncProcessingName_JoinCommunity,
3343  AsyncProcessingName_BrowseCommunity,
3344  AsyncProcessingName_DestroyCommunity,
3345  AsyncProcessingName_LeaveCommunity,
3346  AsyncProcessingName_RequestSessionInfo,
3347  AsyncProcessingName_RequestJointSessionInfo,
3348  AsyncProcessingName_UpdateCommunity
3349  };
3350 
3351  void ResetInternalAsyncState();
3352  bool IsAsyncProcessCompleted(AsyncProcessingName processingName) const;
3353  Result GetAsyncProcessResult(AsyncProcessingName processingName) const;
3354  Result CancelAsyncProcess(AsyncProcessingName processingName);
3355 
3356  Result OpenSessionCore(uint32_t sessionId, IMatchmakeSession* pMatchmakeSession, const UpdateSessionSetting* pUpdateSessionSetting);
3357  Result CloseSessionCore(uint32_t sessionId, IMatchmakeSession* pMatchmakeSession);
3358  Result UpdateSessionSettingAsyncCore(uint32_t targetSessionId, IMatchmakeSession* pMatchmakeSession, const UpdateSessionSetting* pUpdateSessionSetting, bool isOpenSession);
3359 
3360  common::AsyncContext m_InternalContext;
3361  AsyncProcessingName m_CurrentAsyncProcessingName;
3362 
3363  MeshEventListener* m_pMeshEventListener;
3364 
3365  void CallSessionEventCallback(EventType eventType, StationId stationId);
3366 
3367  uint32_t m_WaitingStationIndexBitmap;
3368  bool m_WaitingOtherClientsStationIdFlag;
3369  bool LeaveNoticeToWaitingStationIndex(StationIndex leaveStationIndex);
3370  void ClearWaitingStationIndex();
3371 
3372  DisconnectReason m_DisconnectReason;
3373  bool m_LeaveIgnorableFlag;
3374  bool m_PostponeJoinEventFlag;
3375  void SetLeaveIgnorableFlagEnabled(bool isLeaveIgnorable)
3376  {
3377  m_LeaveIgnorableFlag = isLeaveIgnorable;
3378  }
3379  void SetPostponeJoinEventEnabled(bool isPostponeJoinEvent)
3380  {
3381  m_PostponeJoinEventFlag = isPostponeJoinEvent;
3382  }
3383 
3384  uint8_t CurrentMatchmakeSessionIndex() const
3385  {
3386  return m_CurrentMatchmakeSessionIndex;
3387  }
3388  uint8_t BufferMatchmakeSessionIndex() const
3389  {
3390  return (m_CurrentMatchmakeSessionIndex == 0 ? 1 : 0);
3391  }
3392  void SetCurrentSessionId(uint32_t sessionId)
3393  {
3394  m_SessionId[CurrentMatchmakeSessionIndex()] = sessionId;
3395  }
3396  void SetBufferSessionId(uint32_t sessionId)
3397  {
3398  m_SessionId[BufferMatchmakeSessionIndex()] = sessionId;
3399  }
3400  void SetCurrentMaxParticipantNum(uint16_t num)
3401  {
3402  m_MaxParticipantNum[CurrentMatchmakeSessionIndex()] = num;
3403  }
3404  void SetBufferMaxParticipantNum(uint16_t num)
3405  {
3406  m_MaxParticipantNum[BufferMatchmakeSessionIndex()] = num;
3407  }
3408  void SetJoinRandomScore(uint32_t score)
3409  {
3410  m_JoinRandomScore = score;
3411  m_IsJoinRandomScoreEnabled = true;
3412  }
3413  void SetJoinRandomJointScore(uint32_t score)
3414  {
3415  m_JoinRandomJointScore = score;
3416  m_IsJoinRandomJointScoreEnabled = true;
3417  }
3418 
3419  uint16_t m_MaxParticipantNum[2];
3420  uint8_t m_CurrentMatchmakeSessionIndex;
3421  IMatchmakeSession* m_pMatchmakeSessionPtrArray[2];
3422  ISessionInfoList* m_pSessionInfoList;
3423  uint32_t m_SessionId[2];
3424  ICommunityInfoList* m_pCommunityInfoList;
3425 
3426  SessionOpenStatus m_SessionOpenStatus[2];
3427  void SetCurrentSessionOpenStatus(SessionOpenStatus openStatus);
3428  void SetBufferSessionOpenStatus(SessionOpenStatus openStatus);
3429  void ChangeStationIdConvertEnableFlag(bool flag);
3430 
3431  TStationIdList m_ValidStationIdList;
3432  void* m_pValidStationIdListBuffer;
3433  void validateStationId(StationId targetStationId);
3434  void invalidateStationId(StationId targetStationId);
3435 
3436  uint32_t m_SessionIdOfJointSessionHost;
3437 
3438  // マッチメイク分析機能用フラグ
3439  // ホストマイグレートが起こったイベントを検知するフラグ
3440  bool m_IsHostMigrationOccurred;
3441  transport::Station::IdentificationToken m_MatchmakeAnalysisToken;
3442 
3443  uint16_t m_PlayerNum;
3444  uint16_t m_ParticipantNum;
3445 
3446  uint32_t m_JoinRandomScore;
3447  bool m_IsJoinRandomScoreEnabled;
3448  uint32_t m_JoinRandomJointScore;
3449  bool m_IsJoinRandomJointScoreEnabled;
3450 
3451 #if NN_PIA_NINTENDOSDK && NN_PIA_ENABLE_NSA
3452  void* m_pPlayerHistoryListBuffer;
3453  PlayerHistoryList m_PlayerHistoryList;
3454  AddPlayHistoryJob* m_pAddPlayHistoryJob;
3455 #endif
3456 };
3457 }
3458 }
3459 } // end of namespace nn::pia::session