Mercurial > hg > orthanc
diff Plugins/Include/orthanc/OrthancCPlugin.h @ 1649:8040d56cb0b3
New function "OrthancPluginRegisterErrorCode()" to declare custom error codes
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 25 Sep 2015 16:24:13 +0200 |
parents | 87c77b9b3679 |
children | 5360cdba70d8 |
line wrap: on
line diff
--- a/Plugins/Include/orthanc/OrthancCPlugin.h Fri Sep 25 11:33:55 2015 +0200 +++ b/Plugins/Include/orthanc/OrthancCPlugin.h Fri Sep 25 16:24:13 2015 +0200 @@ -383,6 +383,7 @@ _OrthancPluginService_WriteFile = 16, _OrthancPluginService_GetErrorDescription = 17, _OrthancPluginService_CallHttpClient = 18, + _OrthancPluginService_RegisterErrorCode = 19, /* Registration of callbacks */ _OrthancPluginService_RegisterRestCallback = 1000, @@ -3598,7 +3599,6 @@ OrthancPluginContentType type; } _OrthancPluginStorageAreaRemove; - /** * @brief Remove a file from the storage area. * @@ -3628,6 +3628,55 @@ + typedef struct + { + OrthancPluginErrorCode* target; + int32_t code; + uint16_t httpStatus; + const char* message; + } _OrthancPluginRegisterErrorCode; + + /** + * @brief Declare a custom error code for this plugin. + * + * This function declares a custom error code that can be generated + * by this plugin. This declaration is used to enrich the body of + * the HTTP answer in the case of an error, and to set the proper + * HTTP status code. + * + * @param context The Orthanc plugin context, as received by OrthancPluginInitialize(). + * @param code The error code that is internal to this plugin. + * @param httpStatus The HTTP status corresponding to this error. + * @param message The description of the error. + * @return The error code that has been assigned inside the Orthanc core. + * @ingroup Toolbox + **/ + ORTHANC_PLUGIN_INLINE OrthancPluginErrorCode OrthancPluginRegisterErrorCode( + OrthancPluginContext* context, + int32_t code, + uint16_t httpStatus, + const char* message) + { + OrthancPluginErrorCode target; + + _OrthancPluginRegisterErrorCode params; + params.target = ⌖ + params.code = code; + params.httpStatus = httpStatus; + params.message = message; + + if (context->InvokeService(context, _OrthancPluginService_RegisterErrorCode, ¶ms) == OrthancPluginErrorCode_Success) + { + return target; + } + else + { + /* There was an error while assigned the error. Use a generic code. */ + return OrthancPluginErrorCode_Plugin; + } + } + + #ifdef __cplusplus } #endif