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: 25720 $ 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 }; 32 33 34 /*! 35 @class nn::rdt::CTR::ResultAlreadyInitialized 36 @brief 既に初期化は済んでいたので、何もせずに関数を抜けたことを示します(非エラー)。 37 38 初期化関数を2回以上呼び出したりすると、このリザルトコードが返されることがあります。 39 */ 40 NN_DEFINE_RESULT_CONST( 41 ResultAlreadyInitialized, 42 Result::LEVEL_INFO, 43 Result::SUMMARY_NOTHING_HAPPENED, 44 Result::MODULE_NN_RDT, 45 Result::DESCRIPTION_ALREADY_INITIALIZED); 46 47 48 /*! 49 @class nn::rdt::CTR::ResultDoNothing 50 @brief 何もせずに関数を抜けたことを示します(非エラー)。 51 52 例えば、ゼロバイトのデータ送信を試みた場合などに、このリザルトコードが返されます。 53 */ 54 NN_DEFINE_RESULT_CONST( 55 ResultDoNothing, 56 Result::LEVEL_INFO, 57 Result::SUMMARY_NOTHING_HAPPENED, 58 Result::MODULE_NN_RDT, 59 Result::DESCRIPTION_SUCCESS); 60 61 62 /*! 63 @class nn::rdt::CTR::ResultNotInitialized 64 @brief インスタンスが初期化されていなかったことを示します。 65 66 ほとんどのRDT APIは、インスタンスが初期化されていなければ使用することはできません。 67 RDT APIを呼び出す前に、初期化関数を呼び出し、インスタンスを初期化して下さい。 68 */ 69 NN_DEFINE_RESULT_CONST( 70 ResultNotInitialized, 71 Result::LEVEL_USAGE, 72 Result::SUMMARY_INVALID_STATE, 73 Result::MODULE_NN_RDT, 74 Result::DESCRIPTION_NOT_INITIALIZED); 75 76 77 /*! 78 @class nn::rdt::CTR::ResultSendBufferIsNotAvailable 79 @brief @ref Sender::Sendでデータを送信バッファに書き込もうとしましたが、送信バッファの空きが不足していたことを示します。 80 81 送信バッファに空きを作るには、@ref Sender::Processを呼び出して下さい。 82 @ref Sender::Processは実際の送信処理を実行しますので、送信バッファにコピーされた 83 データは次第に捌けていきます(もちろん、通信相手が適切にデータを受信できていることが前提です) 84 このリザルトコードに遭遇しても、何度か@ref Sender::Processを呼び出してから 85 再び@ref Sender::Sendを試みれば、成功する可能性があります。 86 */ 87 NN_DEFINE_RESULT_CONST( 88 ResultSendBufferIsNotAvailable, 89 Result::LEVEL_TEMPORARY, 90 Result::SUMMARY_OUT_OF_RESOURCE, 91 Result::MODULE_NN_RDT, 92 Result::DESCRIPTION_OUT_OF_MEMORY); 93 94 95 /*! 96 @class nn::rdt::CTR::ResultInvalidSize 97 @brief 引数のサイズ指定が誤っていることを示します。 98 99 例えばバッファのサイズとして、ゼロを指定したりすると、このリザルトコードが返されます。 100 */ 101 NN_DEFINE_RESULT_CONST( 102 ResultInvalidSize, 103 Result::LEVEL_USAGE, 104 Result::SUMMARY_INVALID_ARGUMENT, 105 Result::MODULE_NN_RDT, 106 Result::DESCRIPTION_INVALID_SIZE); 107 108 109 /*! 110 @class nn::rdt::CTR::ResultMisalignedAddress 111 @brief 引数として渡されたメモリアドレスのアライメントが誤っていたことを示します。 112 113 RDTライブラリには、8バイトアライメントが要求される箇所があります。 114 このようなケースでは、適切にアライメントのとれたメモリアドレスを 115 渡す必要があります。 116 */ 117 NN_DEFINE_RESULT_CONST( 118 ResultMisalignedAddress, 119 Result::LEVEL_USAGE, 120 Result::SUMMARY_INVALID_ARGUMENT, 121 Result::MODULE_NN_RDT, 122 Result::DESCRIPTION_MISALIGNED_ADDRESS); 123 124 125 /*! 126 @class nn::rdt::CTR::ResultNullPointer 127 @brief 引数にヌルポインタが指定されたことによるエラーを示します。 128 129 例えば、ワークメモリのためにメモリアドレスを渡したり、データ書き込み先の 130 メモリアドレスを渡しているような箇所でヌルポインタを使うことはできません。 131 */ 132 NN_DEFINE_RESULT_CONST( 133 ResultNullPointer, 134 Result::LEVEL_USAGE, 135 Result::SUMMARY_INVALID_ARGUMENT, 136 Result::MODULE_NN_RDT, 137 Result::DESCRIPTION_INVALID_POINTER); 138 139 140 /*! 141 @class nn::rdt::CTR::ResultResetReceived 142 @brief 通信相手(ピア)からリセット信号を受信し、CLOSED状態に遷移したことを表します。 143 144 リセット信号は、誤った接続要求に対する応答として送出されたり、@ref Sender::Cancel、 145 @ref Receiver::Cancel の実行によって送出されたりします。このリセット信号を受信すると、 146 インスタンスはCLOSED状態に遷移しますので、状況に応じて再接続を試みたり、 147 通信を中断するなどの対応をとって下さい。 148 */ 149 NN_DEFINE_RESULT_CONST( 150 ResultResetReceived, 151 Result::LEVEL_STATUS, 152 Result::SUMMARY_STATUS_CHANGED, 153 Result::MODULE_NN_RDT, 154 DESCRIPTION_RESET_RECEIVED); 155 156 157 /*! 158 @class nn::rdt::CTR::ResultResendQueueIsFull 159 @brief RDTライブラリ内部の再送キューが満杯だったことを示します。 160 161 これは、RDTライブラリのバグが強く疑われる内部エラーです。もし開発中に 162 このエラーを発見されましたら、任天堂へのご連絡をお願いいたします。 163 */ 164 NN_DEFINE_RESULT_CONST( 165 ResultResendQueueIsFull, 166 Result::LEVEL_RESET, 167 Result::SUMMARY_OUT_OF_RESOURCE, 168 Result::MODULE_NN_RDT, 169 Result::DESCRIPTION_OUT_OF_MEMORY); 170 171 172 /*! 173 @class nn::rdt::CTR::ResultUntimelyFunctionCall 174 @brief その関数を呼ぶべき状態ではなかったことを示します。 175 176 @ref Sender::Open, @ref Receiver::Wait などは、関数を呼び出すべきタイミング 177 (インスタンスの状態)が存在します。例えば、既に SENDER_STATE_OPENED 状態である状況で 178 @ref Sender::Openを呼び出すのは誤りです。このような場合にこのリザルトコードが返されます。 179 */ 180 NN_DEFINE_RESULT_CONST( 181 ResultUntimelyFunctionCall, 182 Result::LEVEL_STATUS, 183 Result::SUMMARY_INVALID_STATE, 184 Result::MODULE_NN_RDT, 185 DESCRIPTION_UNTIMELY_CALL); 186 187 188 /*! 189 @class nn::rdt::CTR::ResultNoData 190 @brief ライブラリ内部でのみ使用されるリザルトコードです。受信セグメントが存在しない(まだ到着していない)ことを示します。 191 192 このリザルトコードはRDTライブラリ内部でのみ使用されるものですので、 193 アプリケーション開発者がこれをケアする必要はありません。 194 */ 195 NN_DEFINE_RESULT_CONST( 196 ResultNoData, 197 Result::LEVEL_TEMPORARY, 198 Result::SUMMARY_NOT_FOUND, 199 Result::MODULE_NN_RDT, 200 Result::DESCRIPTION_NO_DATA); 201 202 203 }}} // namespace nn::rdt::CTR 204 205 #endif // end of NN_RDT_RESULT_H_ 206