1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: rdt_Result.h 4 5 Copyright (C) Nintendo. 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: 56250 $ 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 { 25 26 /*! 27 @ingroup nn_rdt 28 @defgroup nn_rdt_result Reliable Local Communication (RDT) Results 29 @brief A list of <tt>Results</tt> used in the Reliable Local Communication (RDT) library. 30 @{ 31 */ 32 33 34 /*! 35 @private 36 @brief <tt>Result</tt> code details. 37 */ 38 enum Description 39 { 40 DESCRIPTION_RESET_RECEIVED = 1, //!< These results transition to a <tt>CLOSED</tt> state because a reset signal was received from the partner. 41 DESCRIPTION_UNTIMELY_CALL = 2, //!< Do not call the function in this state. 42 DESCRIPTION_INVALID_VALUE = 3 //!< Invalid parameter value. 43 }; 44 45 46 /*! 47 @class nn::rdt::ResultAlreadyInitialized 48 @brief Indicates that a function exited without doing anything because initialization had already finished. (This is not an error.) 49 50 This result code may be returned when an initialization function is called more than once. 51 */ 52 NN_DEFINE_RESULT_CONST( 53 ResultAlreadyInitialized, 54 Result::LEVEL_INFO, 55 Result::SUMMARY_NOTHING_HAPPENED, 56 Result::MODULE_NN_RDT, 57 Result::DESCRIPTION_ALREADY_INITIALIZED); 58 59 60 /*! 61 @class nn::rdt::ResultDoNothing 62 @brief Indicates that a function exited without doing anything. (This is not an error.) 63 64 One example of when this result may be returned is when you try to send zero bytes of data. 65 */ 66 NN_DEFINE_RESULT_CONST( 67 ResultDoNothing, 68 Result::LEVEL_INFO, 69 Result::SUMMARY_NOTHING_HAPPENED, 70 Result::MODULE_NN_RDT, 71 Result::DESCRIPTION_SUCCESS); 72 73 74 /*! 75 @class nn::rdt::ResultNotInitialized 76 @brief Indicates an uninitialized instance. 77 78 Most functions in the RDT API require an instance to be initialized before they can be used. 79 Initialize an object instance with an initialization function before you call a function in the RDT library. 80 */ 81 NN_DEFINE_RESULT_CONST( 82 ResultNotInitialized, 83 Result::LEVEL_USAGE, 84 Result::SUMMARY_INVALID_STATE, 85 Result::MODULE_NN_RDT, 86 Result::DESCRIPTION_NOT_INITIALIZED); 87 88 89 /*! 90 @class nn::rdt::ResultSendBufferIsNotAvailable 91 @brief Indicates that the <tt>Sender::Send</tt> function attempted to write data to the send buffer, but the send buffer did not have enough free space. 92 93 Call <tt>Sender::Process</tt> to make free space in the send buffer. 94 Because <tt>@ref Sender::Process</tt> actually sends the data, data copied to the send buffer is eventually used up. (Of course, this assumes the data was successfully received by the receiver.) 95 If you encounter this result code, you might succeed by calling <tt>@ref Sender::Process</tt> followed by <tt>@ref Sender::Send</tt> several times. 96 97 98 */ 99 NN_DEFINE_RESULT_CONST( 100 ResultSendBufferIsNotAvailable, 101 Result::LEVEL_TEMPORARY, 102 Result::SUMMARY_OUT_OF_RESOURCE, 103 Result::MODULE_NN_RDT, 104 Result::DESCRIPTION_OUT_OF_MEMORY); 105 106 107 /*! 108 @class nn::rdt::ResultInvalidSize 109 @brief Indicates that an invalid size was specified as an argument. 110 111 This result code is returned if, for example, you specify a buffer size of zero. 112 */ 113 NN_DEFINE_RESULT_CONST( 114 ResultInvalidSize, 115 Result::LEVEL_USAGE, 116 Result::SUMMARY_INVALID_ARGUMENT, 117 Result::MODULE_NN_RDT, 118 Result::DESCRIPTION_INVALID_SIZE); 119 120 121 /*! 122 @class nn::rdt::ResultMisalignedAddress 123 @brief Indicates that a memory address with an invalid alignment was passed as an argument. 124 125 Some parts of the RDT library require 8-byte alignment. 126 In cases like this, you must pass a correctly aligned memory address. 127 128 */ 129 NN_DEFINE_RESULT_CONST( 130 ResultMisalignedAddress, 131 Result::LEVEL_USAGE, 132 Result::SUMMARY_INVALID_ARGUMENT, 133 Result::MODULE_NN_RDT, 134 Result::DESCRIPTION_MISALIGNED_ADDRESS); 135 136 137 /*! 138 @class nn::rdt::ResultNullPointer 139 @brief Indicates an error caused by specifying a null pointer as an argument. 140 141 For example, you cannot use a null pointer in places where you are passing a memory address for use as working memory or as the memory address to start writing data. 142 143 */ 144 NN_DEFINE_RESULT_CONST( 145 ResultNullPointer, 146 Result::LEVEL_USAGE, 147 Result::SUMMARY_INVALID_ARGUMENT, 148 Result::MODULE_NN_RDT, 149 Result::DESCRIPTION_INVALID_POINTER); 150 151 152 /*! 153 @class nn::rdt::ResultResetReceived 154 @brief Indicates that a reset signal was received from a peer, and there was a state transition to <tt>CLOSED</tt>. 155 156 The reset signal is sent in response to mistaken connection requests and when <tt>@ref Sender::Cancel</tt> or <tt>@ref Receiver::Cancel</tt> is executed. When this reset signal is received, the instance changes state to <tt>CLOSED</tt>. Depending on the situation, you may want to handle this by trying to reconnect again or by disconnecting altogether. 157 158 159 160 */ 161 NN_DEFINE_RESULT_CONST( 162 ResultResetReceived, 163 Result::LEVEL_STATUS, 164 Result::SUMMARY_STATUS_CHANGED, 165 Result::MODULE_NN_RDT, 166 DESCRIPTION_RESET_RECEIVED); 167 168 169 /*! 170 @class nn::rdt::ResultResendQueueIsFull 171 @brief Indicates that the internal resend queue for the RDT library was full. 172 173 This is an internal error. If you encounter it, there is a good chance that it is caused by a bug in the RDT library. Please contact Nintendo (support@noa.com) if you come across this error during development. 174 175 */ 176 NN_DEFINE_RESULT_CONST( 177 ResultResendQueueIsFull, 178 Result::LEVEL_RESET, 179 Result::SUMMARY_OUT_OF_RESOURCE, 180 Result::MODULE_NN_RDT, 181 Result::DESCRIPTION_OUT_OF_MEMORY); 182 183 184 /*! 185 @class nn::rdt::ResultUntimelyFunctionCall 186 @brief Indicates that a function was called at the wrong time. 187 188 Call some functions, such as <tt>@ref Sender::Open</tt> and <tt>@ref Receiver::Wait</tt>, only at particular times or instance states. For example, do not call <tt>@ref Sender::Open</tt> when the instance is already in the <tt>SENDER_STATE_OPENED</tt> state. This result code is returned in such situations. 189 190 191 */ 192 NN_DEFINE_RESULT_CONST( 193 ResultUntimelyFunctionCall, 194 Result::LEVEL_STATUS, 195 Result::SUMMARY_INVALID_STATE, 196 Result::MODULE_NN_RDT, 197 DESCRIPTION_UNTIMELY_CALL); 198 199 200 /*! 201 @class nn::rdt::ResultNoData 202 @brief A result code that is used only within the library. Indicates that no segments have been received. 203 204 Application developers do not need to worry about this result code. It is only used internally by the RDT library. 205 206 */ 207 NN_DEFINE_RESULT_CONST( 208 ResultNoData, 209 Result::LEVEL_TEMPORARY, 210 Result::SUMMARY_NOT_FOUND, 211 Result::MODULE_NN_RDT, 212 Result::DESCRIPTION_NO_DATA); 213 214 215 /*! 216 @class nn::rdt::ResultInvalidValue 217 @brief A result code that indicates that an argument value was invalid. 218 219 Returned when an RDT function receives an unexpected value. 220 */ 221 NN_DEFINE_RESULT_CONST( 222 ResultInvalidValue, 223 Result::LEVEL_USAGE, 224 Result::SUMMARY_INVALID_ARGUMENT, 225 Result::MODULE_NN_RDT, 226 DESCRIPTION_INVALID_VALUE); 227 228 //! @} 229 230 }} // namespace nn::rdt 231 232 #endif // end of NN_RDT_RESULT_H_ 233