CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
クラス nn::pia::Result

処理の結果を示すクラスです。 [詳細]

Public 型

enum  Description {
  Description_Success = 0,
  Description_AllocationFailed,
  Description_AlreadyInitialized,
  Description_BrokenData,
  Description_BufferShortage,
  Description_Cancelled,
  Description_NetworkConnectionIsLost,
  Description_InvalidArgument,
  Description_InvalidState,
  Description_NoData,
  Description_NotFound,
  Description_NotImplemented,
  Description_NotInitialized,
  Description_BufferIsFull,
  Description_TimeOut,
  Description_AlreadyExists,
  Description_ContainerIsFull,
  Description_TemporaryUnavailable,
  Description_NotSet = Description_TemporaryUnavailable + 2,
  Description_MemoryLeak,
  Description_InvalidNode = Description_MemoryLeak + 2,
  Description_NegligibleFault = Description_InvalidNode + 2,
  Description_InvalidConnection,
  Description_ErrorOccurred = Description_InvalidConnection + 2,
  Description_NetworkIsNotFound,
  Description_NetworkIsFull,
  Description_LocalLowerVersion,
  Description_LocalHigherVersion,
  Description_WifiOff,
  Description_Sleep,
  Description_WirelessControllerCountLimitation ,
  Description_VersionMismatched,
  Description_IsNotInCommunication ,
  Description_SyncDataIsNotArrivedYet = 44,
  Description_SyncDataIsNotSet = 50,
  Description_NatCheckFailed = 52 ,
  Description_DnsFailed,
  Description_NexInternalError,
  Description_RequestDenied,
  Description_StationConnectionFailed,
  Description_MeshIsFull = Description_StationConnectionFailed + 4,
  Description_InvalidMessage,
  Description_NatTraversalFailedUnknown,
  Description_NatTraversalFailedLocalEimRemoteEim = Description_NatTraversalFailedUnknown + 3,
  Description_NatTraversalFailedLocalEimRemoteEdm,
  Description_NatTraversalFailedLocalEdmRemoteEim,
  Description_NatTraversalFailedLocalEdmRemoteEdm,
  Description_RelayFailedNoCandidate,
  Description_RelayFailedRttLimit,
  Description_RelayFailedRelayNumLimit,
  Description_RelayFailedUnknown,
  Description_NatTraversalRequestTimeout,
  Description_SessionIsNotFound,
  Description_MatchmakeSessionIsFull,
  Description_DeniedByParticipants,
  Description_ParticipantInBlocklist,
  Description_GameServerMaintenance ,
  Description_SessionUserPasswordUnmatch,
  Description_SessionSystemPasswordUnmatch,
  Description_SessionIsClosed,
  Description_CompanionStationIsOffline,
  Description_HostIsNotFriend,
  Description_SessionConnectionIsLost,
  Description_CompanionStationIsLeft,
  Description_SessionMigrationFailed = Description_CompanionStationIsLeft + 2,
  Description_GameServerProcessAborted,
  Description_SessionWrongState,
  Description_CreateCommunityFailedUpperLimit = Description_SessionWrongState + 4,
  Description_JoinCommunityFailedUpperLimit,
  Description_CommunityIsFull,
  Description_CommunityIsNotFound,
  Description_CommunityIsClosed,
  Description_AlreadyJoinedCommunity,
  Description_UserAccountNotExisted,
  Description_CommunityUserPasswordUnmatch,
  Description_NatTraversalFailedLocalEimRemoteEimSamePublicAddress,
  Description_NatTraversalFailedLocalEimRemoteEdmSamePublicAddress,
  Description_NatTraversalFailedLocalEdmRemoteEimSamePublicAddress,
  Description_NatTraversalFailedLocalEdmRemoteEdmSamePublicAddress,
  Description_SdkError,
  Description_SdkViewerErrorCodeError,
  Description_CancelledByUser,
  Description_SdkViewerResultError,
  Description_LanLowerVersion,
  Description_LanHigherVersion
}
 Pia の汎用 Result を示す列挙型です。 [詳細]
 
enum  HandlingType {
  HandlingType_Void = 0,
  HandlingType_Ignorable,
  HandlingType_Retry,
  HandlingType_Cleanup,
  HandlingType_CleanupWithLeave,
  HandlingType_LogoutWithLeave,
  HandlingType_ShutdownNetwork,
  HandlingType_Finalize,
  HandlingType_ProgrammingError
}
 期待されるハンドリングの種別を表現するための列挙型です。 [詳細]
 
enum  ViewerType {
  ViewerType_Void = 0,
  ViewerType_ShouldUse,
  ViewerType_MayUse,
  ViewerType_ShouldNotUse
}
 エラー・EULA アプレット使用の指針を表現するための列挙型です。 [詳細]
 

Public メソッド

enum Description GetDescription () const
 エラーの詳細を示す Description 列挙体を返します。
 
uint32_t GetErrorCode () const
 Result に対応するエラーコードを得ます。
 
enum HandlingType GetHandlingType () const
 Pia の Result に対して期待されるハンドリングの種別を返します。
 
enum ViewerType GetViewerType () const
 エラー・EULA アプレットを使用しても良い Pia の Result であるかどうかを判定します。
 
const char * ToString () const
 Pia の Result の文字列表現を返します。
 
判定
bool IsFailure () const
 ! IsSuccess() を返します。
 
bool IsSuccess () const
 処理の結果が成功なら true を、失敗なら false を返します。
 
bool operator== (const Result &rhs) const
 一致判定を行います。
 
bool operator!= (const Result &rhs) const
 不一致判定を行います。
 

説明

処理の結果を示すクラスです。

nn::pia 名前空間に所属する API は、nn::pia::Result クラスの実体を返します。

値の意味

Result は 32ビットの値を持ち、内部にエラーハンドリング方法、ビューア使用の可否、種類の3つの情報を含んでいます。 ただしこれらの情報は、将来において変更される可能性があります。

エラーハンドリングの例

以下の点に注意してください。

処理の失敗を判定する

処理の結果はシステムのアップデートによって、アプリケーション開発の時点では定義されていなかった値を返す可能性があります。 このようなケースをカバーするためにも、処理の成否は必ず、 IsSuccess() もしくは IsFailure() で判定する必要があります。 成否を確認せずに一致判定のみを行うことは、想定外のエラーが発生した際に成功と判定してしまう危険性があるため推奨しません。

注意
リファレンスに記載されている Result 以外のものを直接ハンドリングしてはいけません。

製品では発生しないようにするべきエラー

例えば ResultInvalidArgument, ResultInvalidState 等はアプリケーション側の不具合などにより発生する Result です。 これらの Result は、製品では発生しないように修正する必要があります。

上記以外の Result は、ユーザ操作によって発生するものや、開発中に完全に取り除くことが不可能なものになります。 それらのユーザの手元で発生し得るエラーは、必ずハンドリングを行う必要があります。 詳細は、各 API のページを参照してください。

想定外のエラーが発生する場合の対応

処理の結果はシステムのアップデートによって、アプリケーション開発の時点では定義されていなかった値を返す可能性があります。 このため、想定外のエラーが発生する場合の対応コードはほとんどの場合において必要となります。

継続不可能な致命的エラー

「致命的なエラー」とは、ハードウェア不具合や本来製品で発生し得ないエラーなどシステムが何をしても復帰できず、かつハンドリング不可能なエラーのことを指します。

このようなエラーが発生した場合は、原則アプリケーションにエラーが渡されることはなく、システムが停止してFATALエラー画面が表示されます。 このエラー表示に遭遇したユーザーはメッセージに従ってマニュアルを確認し、解決しない場合は最終的にユーザサポートに連絡することになります。

システム上エラー表示も不可能な場合はその場で停止します。

列挙型

Pia の汎用 Result を示す列挙型です。

列挙型の値:
Description_Success 

成功しました

Description_AllocationFailed 

メモリなどのリソースの確保に失敗したことを示します。

Description_AlreadyInitialized 

既に初期化は完了しています。

Description_BrokenData 

通信回線を経由してきたデータが壊れている、あるいは改ざんの疑いがあることを示すエラーです。

Description_BufferShortage 

引数で渡されたバッファのサイズが不足しています。

Description_Cancelled 

非同期処理のキャンセルが要求されました。

Description_NetworkConnectionIsLost 

接続が切れたことを表します。

Description_InvalidArgument 

APIに渡した引数が誤っています。

Description_InvalidState 

APIを呼び出すタイミングが誤っています。ライブラリの状態が、このResultを返したAPIを呼び出せる状態ではなかったことを示します。

Description_NoData 

データが存在しません。

Description_NotFound 

要求されたものが見つかりませんでした。

Description_NotImplemented 

未実装であることを示します。

Description_NotInitialized 

初期化されていません。

Description_BufferIsFull 

処理を実行するのに必要なバッファが一時的に不足していたために失敗しました。ネットワークトラフィックの混雑が原因の場合もあります。時間をあけてから再度実行すれば、成功する可能性があります。

Description_TimeOut 

非同期処理がタイムアウトしました。

Description_AlreadyExists 

対象は既に存在しています。

Description_ContainerIsFull 

コンテナは既に満杯です。

Description_TemporaryUnavailable 

一時的に利用できない状態です。

Description_NotSet 

事前に設定されているべき値が設定されていません。

Description_MemoryLeak 

PIAライブラリ内部でのメモリリーク疑いです。

Description_InvalidNode 

対象のノードがネットワークに存在しません。

Description_NegligibleFault 

無視可能な失敗です。

Description_InvalidConnection 

ネットワークに接続されていません。

Description_ErrorOccurred 

エラーが発生しました。

Description_NetworkIsNotFound 

接続できないネットワークです。

Description_NetworkIsFull 

ネットワークが満員でした。

Description_LocalLowerVersion 

自分のバージョンが通信相手のバージョンよりも低いです。

Description_LocalHigherVersion 

自分のバージョンが通信相手のバージョンよりも高いです。

Description_WifiOff 

無線がオフになっています。

Description_Sleep 

スリープ状態です。

Description_WirelessControllerCountLimitation 

無線コントローラの接続台数が制限を超えています。

Description_VersionMismatched 

通信方式バージョン番号が異なります。

Description_IsNotInCommunication 

通信中ではありません。

Description_SyncDataIsNotArrivedYet 

全 Station のデータが揃っていません。

Description_SyncDataIsNotSet 

送信データが設定されていません。

Description_NatCheckFailed 

NAT チェックに失敗しました。

Description_DnsFailed 

NAT チェック前に行う DNS 名前解決に失敗しました。

Description_NexInternalError 

ゲームサーバが想定外のリザルトコードを返したことを示します。

Description_RequestDenied 

要求が拒否されました。

Description_StationConnectionFailed 

Station 間の接続に失敗しました。

Description_MeshIsFull 

メッシュが満員でした。

Description_InvalidMessage 

不正なシステムメッセージを処理しました。

Description_NatTraversalFailedUnknown 

Station 間の接続に失敗しました。NAT タイプは不明でした。

Description_NatTraversalFailedLocalEimRemoteEim 

Station 間の接続に失敗しました。Local, Remote 共に NAT タイプは EIM でした。

Description_NatTraversalFailedLocalEimRemoteEdm 

Station 間の接続に失敗しました。Local の NAT タイプは EIM, Remote の NAT タイプは EDM でした。

Description_NatTraversalFailedLocalEdmRemoteEim 

Station 間の接続に失敗しました。Local の NAT タイプは EDM, Remote の NAT タイプは EIM でした。

Description_NatTraversalFailedLocalEdmRemoteEdm 

Station 間の接続に失敗しました。Local, Remote 共に NAT タイプは EDM でした。

Description_RelayFailedNoCandidate 

リレー接続に失敗しました。(リレー候補がいなかったため)

Description_RelayFailedRttLimit 

リレー接続に失敗しました。( RTT 制限を超えたため)

Description_RelayFailedRelayNumLimit 

リレー接続に失敗しました。(リレー数制限を超えたため)

Description_RelayFailedUnknown 

リレー接続に失敗しました。(詳細不明)

Description_NatTraversalRequestTimeout 

Station 間の接続に失敗しました。NAT トラバーサル要求がタイムアウトしました。

Description_SessionIsNotFound 

存在しないセッションでした。

Description_MatchmakeSessionIsFull 

マッチメイクセッションが満員でした。

Description_DeniedByParticipants 

自分をブラックリストに登録しているユーザーが参加していました。

Description_ParticipantInBlocklist 

ブロックリストに登録されているユーザーが参加していました。

Description_GameServerMaintenance 

サーバーメンテナンス中です。

Description_SessionUserPasswordUnmatch 

ユーザーパスワードがセットされているセッションに参加しようとしましたがユーザーパスワードが一致しませんでした。

Description_SessionSystemPasswordUnmatch 

システムパスワードがセットされているセッションに参加しようとしましたがシステムパスワードが一致しませんでした。

Description_SessionIsClosed 

参加しようとしたセッションが締め切られていました。

Description_CompanionStationIsOffline 

ジョイントセッション時に同行者として参加させようとしたステーションがサーバーにログインしていませんでした。

Description_HostIsNotFriend 

参加しようとしたセッションのホストとフレンド関係がありませんでした。

Description_SessionConnectionIsLost 

セッションが切断状態です。

Description_CompanionStationIsLeft 

ジョイントセッション時に同行者として指定したステーションが切断していました。

Description_SessionMigrationFailed 

ジョイントセッション時にセッション移行に必要な処理に失敗しました。

Description_GameServerProcessAborted 

ゲームサーバーへの処理が異常終了しました。

Description_SessionWrongState 

参加したセッションの状態が異常でした。

Description_CreateCommunityFailedUpperLimit 

コミュニティの作成上限を超えました。

Description_JoinCommunityFailedUpperLimit 

コミュニティの参加上限を超えました。

Description_CommunityIsFull 

参加しようとしたコミュニティが満員でした。

Description_CommunityIsNotFound 

存在しないコミュニティでした。

Description_CommunityIsClosed 

参加しようとしたコミュニティが参加可能期間外でした。

Description_AlreadyJoinedCommunity 

参加しようとしたコミュニティに既に参加していた。

Description_UserAccountNotExisted 

ユーザーアカウントが存在しませんでした。

Description_CommunityUserPasswordUnmatch 

参加時に指定したユーザーパスワードがコミュニティに設定されたユーザーパスワードと一致しませんでした。

Description_NatTraversalFailedLocalEimRemoteEimSamePublicAddress 

Station 間の接続に失敗しました。Local, Remote 共に NAT タイプは EIM でした。また、Local と Remote は同じグローバルIPアドレスでした。

Description_NatTraversalFailedLocalEimRemoteEdmSamePublicAddress 

Station 間の接続に失敗しました。Local の NAT タイプは EIM, Remote の NAT タイプは EDM でした。また、Local と Remote は同じグローバルIPアドレスでした。

Description_NatTraversalFailedLocalEdmRemoteEimSamePublicAddress 

Station 間の接続に失敗しました。Local の NAT タイプは EDM, Remote の NAT タイプは EIM でした。また、Local と Remote は同じグローバルIPアドレスでした。

Description_NatTraversalFailedLocalEdmRemoteEdmSamePublicAddress 

Station 間の接続に失敗しました。Local, Remote 共に NAT タイプは EDM でした。また、Local と Remote は同じグローバルIPアドレスでした。

Description_SdkError 

SDK の API 呼び出しに失敗しました。

Description_SdkViewerErrorCodeError 

SDK の API 呼び出しに失敗しました。nn::pia::Result::GetErrorCode() で取得できるエラーコードは SDK のものになります。

Description_CancelledByUser 

ユーザー操作に従って処理を中断しました。

Description_SdkViewerResultError 

SDK の API 呼び出しに失敗しました。nn::pia::framework::Framework::GetLastSdkResult() で nn::Result を取得し、エラービューアアプレットを使用して適切にハンドリングして下さい。

Description_LanLowerVersion 

自分のバージョンが通信相手のバージョンよりも低いです。

Description_LanHigherVersion 

自分のバージョンが通信相手のバージョンよりも高いです。

期待されるハンドリングの種別を表現するための列挙型です。

列挙型の値:
HandlingType_Void 

無効な値です。

HandlingType_Ignorable 

無視することが可能です。

HandlingType_Retry 

少し時間をおいてから再実行してください。

HandlingType_Cleanup 

クリーンアップ処理を実行してください。

HandlingType_CleanupWithLeave 

セッション離脱処理、クリーンアップ処理を順に実行してください。

HandlingType_LogoutWithLeave 

セッション離脱処理、クリーンアップ処理、ログアウト処理を順に実行してください。

HandlingType_ShutdownNetwork 

クリーンアップ処理、ログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理を順に実行してください。

HandlingType_Finalize 

クリーンアップ処理、ログアウト処理(インターネット通信時限定)、ネットワークのシャットダウン処理、Pia の終了処理を順に実行してください。

HandlingType_ProgrammingError 

プログラミングエラーです。ソースコードを修正してください。

エラー・EULA アプレット使用の指針を表現するための列挙型です。

列挙型の値:
ViewerType_Void 

無効な値です。

ViewerType_ShouldUse 

使用すべきです。

ViewerType_MayUse 

使用しても構いません。

ViewerType_ShouldNotUse 

使用すべきではありません。

関数

enum Description nn::pia::Result::GetDescription ( ) const
inline

エラーの詳細を示す Description 列挙体を返します。

列挙体の定義は将来変更されます。開発時のエラー内容確認の用途以外では利用してはいけません。

uint32_t nn::pia::Result::GetErrorCode ( ) const

Result に対応するエラーコードを得ます。

Pia ライブラリが返した Result に対応するエラーコードを得ます。

例外的に、 ResultNexInternalError に対して本 API を呼び出すと、この Result の 原因となった NEX の内部エラーに対応するエラーコードが返されます。 この内部エラーには複数の種類があるため、 ResultNexInternalError に対応する 返り値が一定しないことがあります。 得られた値は、エラー・EULAアプレットに渡すことができます。

IsSuccess() が true となる Result に対しては 0 を、Pia ライブラリで定義されていない Result に本 API を適用した場合はアサート停止します(リリースビルドでは PiaErrorCodeBase を返します)。 ResultNexInternalError を除いて、本関数は Pia ライブラリで定義されている Result を一意に識別するコードに変換しますが、 全てのコードをユーザーにエラーとして表示する必要はありません。 エラーコード表示については、 CTR ガイドライン インターネット通信編 や、 ネットワークエラーコードリスト などのドキュメントも参照してください。

戻り値
エラーコードが返されます。
enum HandlingType nn::pia::Result::GetHandlingType ( ) const
inline

Pia の Result に対して期待されるハンドリングの種別を返します。

戻り値
Result に応じたハンドリングの列挙値が返されます。 Pia 以外の Result や、Pia 内部でのみ使用される Result を 渡した場合は HandlingType_Void が返されます。
enum ViewerType nn::pia::Result::GetViewerType ( ) const
inline

エラー・EULA アプレットを使用しても良い Pia の Result であるかどうかを判定します。

Pia API 呼び出しで失敗の Result が返された場合に、その Result から GetErrorCode で取得したエラーコードを エラー・EULA アプレット に渡すのが適切かどうかを判定する API です。

ただし、ローカル通信時に返された Result については、この API の返り値にかかわらず、 エラー・EULA アプレットを使用してはいけません。

戻り値
渡された Result に応じた ViewerType が返されます。 Pia 以外の Result が渡された場合は ViewerType_Void が返されます。
bool nn::pia::Result::operator!= ( const Result rhs) const
inline

不一致判定を行います。

引数
[in]rhs演算子の右オペランドです。
戻り値
一致しない場合に true を、一致する場合に false を返します。
bool nn::pia::Result::operator== ( const Result rhs) const
inline

一致判定を行います。

引数
[in]rhs演算子の右オペランドです。
戻り値
一致した場合に true を、一致しない場合に false を返します。
const char* nn::pia::Result::ToString ( ) const

Pia の Result の文字列表現を返します。

戻り値
Pia の Result の文字列表現が返されます。