24 #ifndef _ERROR_MANAGER_H_ 25 #define _ERROR_MANAGER_H_ 33 #if defined (SERVER_MODE) 44 #define ARG_FILE_LINE __FILE__, __LINE__ 48 #define ERROR0(error, code) \ 52 er_set (ER_WARNING_SEVERITY, ARG_FILE_LINE, code, 0); \ 56 #define ERROR1(error, code, arg1) \ 60 er_set (ER_WARNING_SEVERITY, ARG_FILE_LINE, code, 1, arg1); \ 64 #define ERROR2(error, code, arg1, arg2) \ 68 er_set (ER_WARNING_SEVERITY, ARG_FILE_LINE, code, 2, arg1, arg2); \ 72 #define ERROR3(error, code, arg1, arg2, arg3) \ 76 er_set (ER_WARNING_SEVERITY, ARG_FILE_LINE, code, 3, arg1, arg2, arg3); \ 80 #define ERROR4(error, code, arg1, arg2, arg3, arg4) \ 84 er_set (ER_WARNING_SEVERITY, ARG_FILE_LINE, code, 4, arg1, arg2, arg3, arg4); \ 92 #define STRINGIZE(s) #s 93 #define assert_release(e) \ 94 ((e) ? (void) 0 : er_set (ER_NOTIFICATION_SEVERITY, ARG_FILE_LINE, ER_FAILED_ASSERTION, 1, STRINGIZE (e))) 96 #define assert_release(e) assert(e) 136 #define ER_IS_LOCK_TIMEOUT_ERROR(err) \ 137 ((err) == ER_LK_UNILATERALLY_ABORTED \ 138 || (err) == ER_LK_OBJECT_TIMEOUT_SIMPLE_MSG \ 139 || (err) == ER_LK_OBJECT_TIMEOUT_CLASS_MSG \ 140 || (err) == ER_LK_OBJECT_TIMEOUT_CLASSOF_MSG \ 141 || (err) == ER_LK_OBJECT_DL_TIMEOUT_SIMPLE_MSG \ 142 || (err) == ER_LK_OBJECT_DL_TIMEOUT_CLASS_MSG \ 143 || (err) == ER_LK_OBJECT_DL_TIMEOUT_CLASSOF_MSG) 145 #define ER_IS_ABORTED_DUE_TO_DEADLOCK(err) \ 146 ((err) == ER_LK_UNILATERALLY_ABORTED \ 147 || (err) == ER_TM_SERVER_DOWN_UNILATERALLY_ABORTED) 149 #define ER_IS_SERVER_DOWN_ERROR(err) \ 150 ((err) == ER_TM_SERVER_DOWN_UNILATERALLY_ABORTED \ 151 || (err) == ER_NET_SERVER_CRASHED \ 152 || (err) == ER_OBJ_NO_CONNECT \ 153 || (err) == ER_BO_CONNECT_FAILED) 156 #define ASSERT_ERROR() \ 157 assert (er_errid () != NO_ERROR) 161 #define ASSERT_ERROR_AND_SET(error_code) \ 164 error_code = er_errid (); \ 165 if (error_code == NO_ERROR) \ 169 error_code = ER_FAILED; \ 173 #define ASSERT_NO_ERROR() \ 174 assert (er_errid () == NO_ERROR); 182 extern int er_init (
const char *msglog_filename,
int exit_ask);
187 extern void er_set (
int severity,
const char *file_name,
const int line_no,
int err_id,
int num_args, ...);
188 extern void er_set_with_file (
int severity,
const char *file_name,
const int line_no,
int err_id, FILE * fp,
190 extern void er_set_with_oserror (
int severity,
const char *file_name,
const int line_no,
int err_id,
int num_args,
195 #if !defined (WINDOWS) && defined (SERVER_MODE) 196 extern void er_file_create_link_to_current_log_file (
const char *er_file_path,
const char *suffix);
202 extern const char *
er_msg (
void);
203 extern void er_all (
int *err_id,
int *severity,
int *nlevels,
int *line_no,
const char **file_name,
const char **msg);
205 extern void _er_log_debug (
const char *file_name,
const int line_no,
const char *fmt, ...);
206 #define er_log_debug(...) if (prm_get_bool_value (PRM_ID_ER_LOG_DEBUG)) _er_log_debug(__VA_ARGS__) 223 extern void er_print_callstack (
const char *file_name,
const int line_no,
const char *fmt, ...);
224 #if defined (CS_MODE) 225 extern void er_set_ignore_uninit (
bool ignore);
234 #if defined (SERVER_MODE) || !defined (WINDOWS) 236 #define CUBERR_MANAGER_DLL 237 #elif defined (CS_MODE) || defined (SA_MODE) 239 #define CUBERR_MANAGER_DLL __declspec( dllexport ) 240 #else // Windows, not CS_MODE and not SA_MODE 242 #define CUBERR_MANAGER_DLL __declspec( dllimport ) 243 #endif // Windows, not CS_MODE and not SA_MODE 248 class CUBERR_MANAGER_DLL manager
251 manager (
const char * msg_file,
er_exit_ask exit_arg);
260 #define ER_SAFE_INIT(msg_file, exit_arg) cuberr::manager cuberr_manager (msg_file, exit_arg)
int er_errid_if_has_error(void)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
char * er_get_area_error(char *buffer, int *length)
const char * er_get_msglog_filename(void)
int er_get_severity(void)
void er_stack_clearall(void)
er_log_handler_t er_register_log_handler(er_log_handler_t f)
char * er_get_ermsg_from_area_error(char *buffer)
int er_event_restart(void)
int er_set_area_error(char *server_area)
void er_set_with_file(int severity, const char *file_name, const int line_no, int err_id, FILE *fp, int num_args,...)
const char * er_msg(void)
void er_setid(int err_id)
void er_all(int *err_id, int *severity, int *nlevels, int *line_no, const char **file_name, const char **msg)
void er_set_with_oserror(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
void er_stack_pop_and_keep_error(void)
void er_print_callstack(const char *file_name, const int line_no, const char *fmt,...)
void * db_default_malloc_handler(void *arg, const char *filename, int line_no, size_t size)
void(* er_log_handler_t)(unsigned int)
void _er_log_debug(const char *file_name, const int line_no, const char *fmt,...)
int er_init(const char *msglog_filename, int exit_ask)
void er_set_print_property(int print_console)
void(* PTR_FNERLOG)(int err_id)
bool er_is_initialized(void)
void er_final(ER_FINAL_CODE do_global_final)
void er_stack_push_if_exists(void)
void er_restore_last_error(void)
enum er_final_code ER_FINAL_CODE