1 /*-------------------------------------------------------------------------- 2 Project: Horizon 3 File: rdt_Result.h 4 5 Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 28630 $ 14 *-------------------------------------------------------------------------*/ 15 16 ////#include <stdafx.h> 17 18 #ifndef NN_RDT_RESULT_H_ 19 #define NN_RDT_RESULT_H_ 20 21 #include <nn/Result.h> 22 23 24 namespace nn { namespace rdt { namespace CTR { 25 26 27 enum Description 28 { 29 DESCRIPTION_RESET_RECEIVED = 1, //!< 相手からリセット信号を受け取ったので、こちらはCLOSED状態に移行する 30 DESCRIPTION_UNTIMELY_CALL = 2, //!< 状態に対する関数呼び出しが不適切 31 DESCRIPTION_INVALID_VALUE = 3 //!< 引数の値が不正 32 }; 33 34 35 /*! 36 @class nn::rdt::CTR::ResultAlreadyInitialized 37 @brief 既に初期化は済んでいたので、何もせずに関数を抜けたことを示します(非エラー)。 38 39 初期化関数を2回以上呼び出したりすると、このリザルトコードが返されることがあります。 40 */ 41 NN_DEFINE_RESULT_CONST( 42 ResultAlreadyInitialized, 43 Result::LEVEL_INFO, 44 Result::SUMMARY_NOTHING_HAPPENED, 45 Result::MODULE_NN_RDT, 46 Result::DESCRIPTION_ALREADY_INITIALIZED); 47 48 49 /*! 50 @class nn::rdt::CTR::ResultDoNothing 51 @brief 何もせずに関数を抜けたことを示します(非エラー)。 52 53 例えば、ゼロバイトのデータ送信を試みた場合などに、このリザルトコードが返されます。 54 */ 55 NN_DEFINE_RESULT_CONST( 56 ResultDoNothing, 57 Result::LEVEL_INFO, 58 Result::SUMMARY_NOTHING_HAPPENED, 59 Result::MODULE_NN_RDT, 60 Result::DESCRIPTION_SUCCESS); 61 62 63 /*! 64 @class nn::rdt::CTR::ResultNotInitialized 65 @brief インスタンスが初期化されていなかったことを示します。 66 67 ほとんどのRDT APIは、インスタンスが初期化されていなければ使用することはできません。 68 RDT APIを呼び出す前に、初期化関数を呼び出し、インスタンスを初期化して下さい。 69 */ 70 NN_DEFINE_RESULT_CONST( 71 ResultNotInitialized, 72 Result::LEVEL_USAGE, 73 Result::SUMMARY_INVALID_STATE, 74 Result::MODULE_NN_RDT, 75 Result::DESCRIPTION_NOT_INITIALIZED); 76 77 78 /*! 79 @class nn::rdt::CTR::ResultSendBufferIsNotAvailable 80 @brief @ref Sender::Sendでデータを送信バッファに書き込もうとしましたが、送信バッファの空きが不足していたことを示します。 81 82 送信バッファに空きを作るには、@ref Sender::Processを呼び出して下さい。 83 @ref Sender::Processは実際の送信処理を実行しますので、送信バッファにコピーされた 84 データは次第に捌けていきます(もちろん、通信相手が適切にデータを受信できていることが前提です) 85 このリザルトコードに遭遇しても、何度か@ref Sender::Processを呼び出してから 86 再び@ref Sender::Sendを試みれば、成功する可能性があります。 87 */ 88 NN_DEFINE_RESULT_CONST( 89 ResultSendBufferIsNotAvailable, 90 Result::LEVEL_TEMPORARY, 91 Result::SUMMARY_OUT_OF_RESOURCE, 92 Result::MODULE_NN_RDT, 93 Result::DESCRIPTION_OUT_OF_MEMORY); 94 95 96 /*! 97 @class nn::rdt::CTR::ResultInvalidSize 98 @brief 引数のサイズ指定が誤っていることを示します。 99 100 例えばバッファのサイズとして、ゼロを指定したりすると、このリザルトコードが返されます。 101 */ 102 NN_DEFINE_RESULT_CONST( 103 ResultInvalidSize, 104 Result::LEVEL_USAGE, 105 Result::SUMMARY_INVALID_ARGUMENT, 106 Result::MODULE_NN_RDT, 107 Result::DESCRIPTION_INVALID_SIZE); 108 109 110 /*! 111 @class nn::rdt::CTR::ResultMisalignedAddress 112 @brief 引数として渡されたメモリアドレスのアライメントが誤っていたことを示します。 113 114 RDTライブラリには、8バイトアライメントが要求される箇所があります。 115 このようなケースでは、適切にアライメントのとれたメモリアドレスを 116 渡す必要があります。 117 */ 118 NN_DEFINE_RESULT_CONST( 119 ResultMisalignedAddress, 120 Result::LEVEL_USAGE, 121 Result::SUMMARY_INVALID_ARGUMENT, 122 Result::MODULE_NN_RDT, 123 Result::DESCRIPTION_MISALIGNED_ADDRESS); 124 125 126 /*! 127 @class nn::rdt::CTR::ResultNullPointer 128 @brief 引数にヌルポインタが指定されたことによるエラーを示します。 129 130 例えば、ワークメモリのためにメモリアドレスを渡したり、データ書き込み先の 131 メモリアドレスを渡しているような箇所でヌルポインタを使うことはできません。 132 */ 133 NN_DEFINE_RESULT_CONST( 134 ResultNullPointer, 135 Result::LEVEL_USAGE, 136 Result::SUMMARY_INVALID_ARGUMENT, 137 Result::MODULE_NN_RDT, 138 Result::DESCRIPTION_INVALID_POINTER); 139 140 141 /*! 142 @class nn::rdt::CTR::ResultResetReceived 143 @brief 通信相手(ピア)からリセット信号を受信し、CLOSED状態に遷移したことを表します。 144 145 リセット信号は、誤った接続要求に対する応答として送出されたり、@ref Sender::Cancel、 146 @ref Receiver::Cancel の実行によって送出されたりします。このリセット信号を受信すると、 147 インスタンスはCLOSED状態に遷移しますので、状況に応じて再接続を試みたり、 148 通信を中断するなどの対応をとって下さい。 149 */ 150 NN_DEFINE_RESULT_CONST( 151 ResultResetReceived, 152 Result::LEVEL_STATUS, 153 Result::SUMMARY_STATUS_CHANGED, 154 Result::MODULE_NN_RDT, 155 DESCRIPTION_RESET_RECEIVED); 156 157 158 /*! 159 @class nn::rdt::CTR::ResultResendQueueIsFull 160 @brief RDTライブラリ内部の再送キューが満杯だったことを示します。 161 162 これは、RDTライブラリのバグが強く疑われる内部エラーです。もし開発中に 163 このエラーを発見されましたら、任天堂へのご連絡をお願いいたします。 164 */ 165 NN_DEFINE_RESULT_CONST( 166 ResultResendQueueIsFull, 167 Result::LEVEL_RESET, 168 Result::SUMMARY_OUT_OF_RESOURCE, 169 Result::MODULE_NN_RDT, 170 Result::DESCRIPTION_OUT_OF_MEMORY); 171 172 173 /*! 174 @class nn::rdt::CTR::ResultUntimelyFunctionCall 175 @brief その関数を呼ぶべき状態ではなかったことを示します。 176 177 @ref Sender::Open, @ref Receiver::Wait などは、関数を呼び出すべきタイミング 178 (インスタンスの状態)が存在します。例えば、既に SENDER_STATE_OPENED 状態である状況で 179 @ref Sender::Openを呼び出すのは誤りです。このような場合にこのリザルトコードが返されます。 180 */ 181 NN_DEFINE_RESULT_CONST( 182 ResultUntimelyFunctionCall, 183 Result::LEVEL_STATUS, 184 Result::SUMMARY_INVALID_STATE, 185 Result::MODULE_NN_RDT, 186 DESCRIPTION_UNTIMELY_CALL); 187 188 189 /*! 190 @class nn::rdt::CTR::ResultNoData 191 @brief ライブラリ内部でのみ使用されるリザルトコードです。受信セグメントが存在しない(まだ到着していない)ことを示します。 192 193 このリザルトコードはRDTライブラリ内部でのみ使用されるものですので、 194 アプリケーション開発者がこれをケアする必要はありません。 195 */ 196 NN_DEFINE_RESULT_CONST( 197 ResultNoData, 198 Result::LEVEL_TEMPORARY, 199 Result::SUMMARY_NOT_FOUND, 200 Result::MODULE_NN_RDT, 201 Result::DESCRIPTION_NO_DATA); 202 203 204 /*! 205 @class nn::rdt::CTR::ResultInvalidValue 206 @brief 引数の値が不正だったことを示すリザルトコードです。 207 208 RDT APIが期待していない値を受け取ったときに返されます。 209 */ 210 NN_DEFINE_RESULT_CONST( 211 ResultInvalidValue, 212 Result::LEVEL_USAGE, 213 Result::SUMMARY_INVALID_ARGUMENT, 214 Result::MODULE_NN_RDT, 215 DESCRIPTION_INVALID_VALUE); 216 217 218 }}} // namespace nn::rdt::CTR 219 220 #endif // end of NN_RDT_RESULT_H_ 221