/*-------------------------------------------------------------------------- Project: Horizon File: rdt_Result.h Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 28630 $ *-------------------------------------------------------------------------*/ ////#include #ifndef NN_RDT_RESULT_H_ #define NN_RDT_RESULT_H_ #include namespace nn { namespace rdt { namespace CTR { enum Description { DESCRIPTION_RESET_RECEIVED = 1, //!< 相手からリセット信号を受け取ったので、こちらはCLOSED状態に移行する DESCRIPTION_UNTIMELY_CALL = 2, //!< 状態に対する関数呼び出しが不適切 DESCRIPTION_INVALID_VALUE = 3 //!< 引数の値が不正 }; /*! @class nn::rdt::CTR::ResultAlreadyInitialized @brief 既に初期化は済んでいたので、何もせずに関数を抜けたことを示します(非エラー)。 初期化関数を2回以上呼び出したりすると、このリザルトコードが返されることがあります。 */ NN_DEFINE_RESULT_CONST( ResultAlreadyInitialized, Result::LEVEL_INFO, Result::SUMMARY_NOTHING_HAPPENED, Result::MODULE_NN_RDT, Result::DESCRIPTION_ALREADY_INITIALIZED); /*! @class nn::rdt::CTR::ResultDoNothing @brief 何もせずに関数を抜けたことを示します(非エラー)。 例えば、ゼロバイトのデータ送信を試みた場合などに、このリザルトコードが返されます。 */ NN_DEFINE_RESULT_CONST( ResultDoNothing, Result::LEVEL_INFO, Result::SUMMARY_NOTHING_HAPPENED, Result::MODULE_NN_RDT, Result::DESCRIPTION_SUCCESS); /*! @class nn::rdt::CTR::ResultNotInitialized @brief インスタンスが初期化されていなかったことを示します。 ほとんどのRDT APIは、インスタンスが初期化されていなければ使用することはできません。 RDT APIを呼び出す前に、初期化関数を呼び出し、インスタンスを初期化して下さい。 */ NN_DEFINE_RESULT_CONST( ResultNotInitialized, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_RDT, Result::DESCRIPTION_NOT_INITIALIZED); /*! @class nn::rdt::CTR::ResultSendBufferIsNotAvailable @brief @ref Sender::Sendでデータを送信バッファに書き込もうとしましたが、送信バッファの空きが不足していたことを示します。 送信バッファに空きを作るには、@ref Sender::Processを呼び出して下さい。 @ref Sender::Processは実際の送信処理を実行しますので、送信バッファにコピーされた データは次第に捌けていきます(もちろん、通信相手が適切にデータを受信できていることが前提です) このリザルトコードに遭遇しても、何度か@ref Sender::Processを呼び出してから 再び@ref Sender::Sendを試みれば、成功する可能性があります。 */ NN_DEFINE_RESULT_CONST( ResultSendBufferIsNotAvailable, Result::LEVEL_TEMPORARY, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_RDT, Result::DESCRIPTION_OUT_OF_MEMORY); /*! @class nn::rdt::CTR::ResultInvalidSize @brief 引数のサイズ指定が誤っていることを示します。 例えばバッファのサイズとして、ゼロを指定したりすると、このリザルトコードが返されます。 */ NN_DEFINE_RESULT_CONST( ResultInvalidSize, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_RDT, Result::DESCRIPTION_INVALID_SIZE); /*! @class nn::rdt::CTR::ResultMisalignedAddress @brief 引数として渡されたメモリアドレスのアライメントが誤っていたことを示します。 RDTライブラリには、8バイトアライメントが要求される箇所があります。 このようなケースでは、適切にアライメントのとれたメモリアドレスを 渡す必要があります。 */ NN_DEFINE_RESULT_CONST( ResultMisalignedAddress, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_RDT, Result::DESCRIPTION_MISALIGNED_ADDRESS); /*! @class nn::rdt::CTR::ResultNullPointer @brief 引数にヌルポインタが指定されたことによるエラーを示します。 例えば、ワークメモリのためにメモリアドレスを渡したり、データ書き込み先の メモリアドレスを渡しているような箇所でヌルポインタを使うことはできません。 */ NN_DEFINE_RESULT_CONST( ResultNullPointer, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_RDT, Result::DESCRIPTION_INVALID_POINTER); /*! @class nn::rdt::CTR::ResultResetReceived @brief 通信相手(ピア)からリセット信号を受信し、CLOSED状態に遷移したことを表します。 リセット信号は、誤った接続要求に対する応答として送出されたり、@ref Sender::Cancel、 @ref Receiver::Cancel の実行によって送出されたりします。このリセット信号を受信すると、 インスタンスはCLOSED状態に遷移しますので、状況に応じて再接続を試みたり、 通信を中断するなどの対応をとって下さい。 */ NN_DEFINE_RESULT_CONST( ResultResetReceived, Result::LEVEL_STATUS, Result::SUMMARY_STATUS_CHANGED, Result::MODULE_NN_RDT, DESCRIPTION_RESET_RECEIVED); /*! @class nn::rdt::CTR::ResultResendQueueIsFull @brief RDTライブラリ内部の再送キューが満杯だったことを示します。 これは、RDTライブラリのバグが強く疑われる内部エラーです。もし開発中に このエラーを発見されましたら、任天堂へのご連絡をお願いいたします。 */ NN_DEFINE_RESULT_CONST( ResultResendQueueIsFull, Result::LEVEL_RESET, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_RDT, Result::DESCRIPTION_OUT_OF_MEMORY); /*! @class nn::rdt::CTR::ResultUntimelyFunctionCall @brief その関数を呼ぶべき状態ではなかったことを示します。 @ref Sender::Open, @ref Receiver::Wait などは、関数を呼び出すべきタイミング (インスタンスの状態)が存在します。例えば、既に SENDER_STATE_OPENED 状態である状況で @ref Sender::Openを呼び出すのは誤りです。このような場合にこのリザルトコードが返されます。 */ NN_DEFINE_RESULT_CONST( ResultUntimelyFunctionCall, Result::LEVEL_STATUS, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_RDT, DESCRIPTION_UNTIMELY_CALL); /*! @class nn::rdt::CTR::ResultNoData @brief ライブラリ内部でのみ使用されるリザルトコードです。受信セグメントが存在しない(まだ到着していない)ことを示します。 このリザルトコードはRDTライブラリ内部でのみ使用されるものですので、 アプリケーション開発者がこれをケアする必要はありません。 */ NN_DEFINE_RESULT_CONST( ResultNoData, Result::LEVEL_TEMPORARY, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_RDT, Result::DESCRIPTION_NO_DATA); /*! @class nn::rdt::CTR::ResultInvalidValue @brief 引数の値が不正だったことを示すリザルトコードです。 RDT APIが期待していない値を受け取ったときに返されます。 */ NN_DEFINE_RESULT_CONST( ResultInvalidValue, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_RDT, DESCRIPTION_INVALID_VALUE); }}} // namespace nn::rdt::CTR #endif // end of NN_RDT_RESULT_H_