28 #if defined (SERVER_MODE) 40 #define ERROR_CONTEXT_LOG(...) if (m_logging) _er_log_debug (ARG_FILE_LINE, __VA_ARGS__) 42 #define ERMSG_MSG "{ %p: errid=%d, sev=%d, fname=%s, line=%d, msg_area=%p(%s)_size=%zu, msgbuf=%p(%s), args=%p_n=%d }" 43 #define ERMSG_ARGS(em) &(em), (em).err_id, (em).severity, (em).file_name, (em).line_no, (em).msg_area, (em).msg_area, \ 44 (em).msg_area_size, (em).msg_buffer, (em).msg_buffer, (em).args, (em).nargs 45 #define ERMSG_LOG(text, var) ERROR_CONTEXT_LOG (text #var " = " ERMSG_MSG, ERMSG_ARGS (var)) 54 , msg_area_size (sizeof (msg_buffer))
55 , msg_area (msg_buffer)
82 const std::size_t bufsize =
sizeof (this->
msg_buffer);
88 char aux_buffer[bufsize];
89 std::memcpy (aux_buffer, this->
msg_buffer, bufsize);
91 std::memcpy (other.
msg_buffer, aux_buffer, bufsize);
105 std::memcpy (other.
msg_buffer, this->msg_buffer, bufsize);
196 while (new_size < size)
211 , m_automatic_registration (automatic_registration)
213 , m_destroyed (false)
215 if (automatic_registration)
227 if (tl_Context_p ==
this)
257 #if defined (SERVER_MODE) 261 #endif // SERVER_MODE 265 assert (tl_Context_p ==
this);
326 std::stack<er_message> ().swap (
m_stack);
332 if (tl_Context_p ==
NULL)
335 static context emergency_context (
false,
false);
336 #if defined (SERVER_MODE) 341 #endif // SERVER_MODE 342 return emergency_context;
char msg_buffer[ER_EMERGENCY_BUF_SIZE]
context(bool automatic_registration=false, bool logging=false)
void clear_message_area(void)
bool m_automatic_registration
er_message & get_current_error_level(void)
thread_local context * tl_Context_p
void pop_error_stack_and_destroy(void)
void register_thread_local(void)
void pop_error_stack(er_message &popped)
#define ERMSG_LOG(text, var)
manager * get_manager(void)
std::stack< er_message > m_stack
void clear_current_error_level(void)
cuberr::context & get_error_context(void)
static er_message & get_thread_local_error(void)
void swap(er_message &other)
bool has_error_stack(void)
const bool & get_logging(void)
void push_error_stack(void)
void deregister_thread_local(void)
void reserve_message_area(std::size_t size)
static context & get_thread_local_context(void)
#define free_and_init(ptr)
void set_error(int error_id, int error_severity, const char *filename, int line_no)
void clear_all_levels(void)
er_message(const bool &logging)
std::size_t msg_area_size