namespace libtest {
-fatal::fatal(const char *file, int line, const char *func, const char *format, ...) :
- std::runtime_error(func)
+exception::exception(const char *file_, int line_, const char *func_) :
+ std::runtime_error(func_),
+ _file(file_),
+ _line(line_),
+ _func(func_)
+ {
+ }
+
+fatal::fatal(const char *file_, int line_, const char *func_, const char *format, ...) :
+ exception(file_, line_, func_)
{
va_list args;
va_start(args, format);
char last_error[BUFSIZ];
- (void)vsnprintf(last_error, sizeof(last_error), format, args);
+ int last_error_length= vsnprintf(last_error, sizeof(last_error), format, args);
va_end(args);
- snprintf(_error_message, sizeof(_error_message), "%s:%d FATAL:%s (%s)", file, int(line), last_error, func);
+ snprintf(_error_message, sizeof(_error_message), "%.*s", last_error_length, last_error);
}
static bool _disabled= false;
_counter++;
}
-disconnected::disconnected(const char *file, int line, const char *func, const char *instance, const in_port_t port, const char *format, ...) :
- _port(port),
- std::runtime_error(func)
+disconnected::disconnected(const char *file_, int line_, const char *func_,
+ const std::string& instance, const in_port_t port,
+ const char *format, ...) :
+ exception(file_, line_, func_),
+ _port(port)
+{
+ va_list args;
+ va_start(args, format);
+ char last_error[BUFSIZ];
+ (void)vsnprintf(last_error, sizeof(last_error), format, args);
+ va_end(args);
+
+ snprintf(_error_message, sizeof(_error_message), "%s:%u %s", instance.c_str(), uint32_t(port), last_error);
+}
+
+start::start(const char *file_, int line_, const char *func_,
+ const std::string& instance, const in_port_t port,
+ const char *format, ...) :
+ exception(file_, line_, func_),
+ _port(port)
{
- strncpy(_instance, instance, sizeof(_instance));
va_list args;
va_start(args, format);
char last_error[BUFSIZ];
(void)vsnprintf(last_error, sizeof(last_error), format, args);
va_end(args);
- snprintf(_error_message, sizeof(_error_message), "%s:%d FATAL:%s (%s)", file, int(line), last_error, func);
+ snprintf(_error_message, sizeof(_error_message), "%s:%u %s", instance.c_str(), uint32_t(port), last_error);
}
} // namespace libtest