/****************************************************************************** * Copyright (c) Huawei Technologies Co., Ltd. 2018-2019. All rights reserved. * lcr licensed under the Mulan PSL v1. * You can use this software according to the terms and conditions of the Mulan PSL v1. * You may obtain a copy of Mulan PSL v1 at: * http://license.coscl.org.cn/MulanPSL * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR * PURPOSE. * See the Mulan PSL v1 for more details. * Author: wujing * Create: 2018-11-08 * Description: provide container error definition ******************************************************************************/ #ifndef __LCR_ERROR_H #define __LCR_ERROR_H #ifdef __cplusplus extern "C" { #endif typedef struct engine_error { uint32_t errcode; char *errmsg; } engine_error_t; /*record the lcr error*/ extern __thread engine_error_t g_lcr_error; #define DEF_SUCCESS_STR "Success" #define DEF_ERR_RUNTIME_STR "Runtime error" #define LCR_ERRNO_MAP(XX) \ XX(SUCCESS, DEF_SUCCESS_STR) \ \ /* err in posix api call */ \ XX(ERR_MEMOUT, "Out of memory") \ XX(ERR_MEMSET, "Memory set error") \ \ /* err in other case or call function int thirdparty library */ \ XX(ERR_FORMAT, "Error message is too long") \ XX(ERR_INPUT, "Invalid input parameter") \ XX(ERR_INTERNAL, "Server internal error") \ \ /* err in runtime module */ \ XX(ERR_RUNTIME, DEF_ERR_RUNTIME_STR) \ \ /* err max */ \ XX(ERR_UNKNOWN, "Unknown error") #define LCR_ERRNO_GEN(n, s) LCR_##n, typedef enum { LCR_ERRNO_MAP(LCR_ERRNO_GEN) } lcr_errno_t; #undef LCR_ERRNO_GEN const char *errno_to_error_message(lcr_errno_t err); void clear_error_message(engine_error_t *error); void lcr_set_error_message(lcr_errno_t errcode, const char *format, ...); void lcr_try_set_error_message(lcr_errno_t errcode, const char *format, ...); void lcr_append_error_message(lcr_errno_t errcode, const char *format, ...); #ifdef __cplusplus } #endif #endif