namespace {
std::string format_throw_location(
- const char *file_name, const char *function_name, unsigned int line_number)
+ const char *file_name, const char *function_name, unsigned int line_number)
{
std::stringstream location;
return location.str();
}
-} // namespace
+} /* namespace */
lttng::ctl::error::error(lttng_error_code error_code,
- const char *file_name,
- const char *function_name,
- unsigned int line_number) :
- std::runtime_error(std::string(error_get_str(error_code)) + " " +
- format_throw_location(file_name, function_name, line_number))
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number) :
+ runtime_error(std::string(error_get_str(error_code)), file_name, function_name, line_number)
{
}
-lttng::posix_error::posix_error(const std::string &msg,
- int errno_code,
- const char *file_name,
- const char *function_name,
- unsigned int line_number) :
+lttng::posix_error::posix_error(const std::string& msg,
+ int errno_code,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number) :
std::system_error(errno_code,
- std::generic_category(),
- msg + " " + format_throw_location(file_name, function_name, line_number))
+ std::generic_category(),
+ msg + " " + format_throw_location(file_name, function_name, line_number))
{
}
-lttng::runtime_error::runtime_error(const std::string &msg,
- const char *file_name,
- const char *function_name,
- unsigned int line_number) :
+lttng::runtime_error::runtime_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number) :
std::runtime_error(msg + " " + format_throw_location(file_name, function_name, line_number))
{
}
+
+lttng::communication_error::communication_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number) :
+ runtime_error(msg, file_name, function_name, line_number)
+{
+}
+
+lttng::protocol_error::protocol_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number) :
+ communication_error(msg, file_name, function_name, line_number)
+{
+}
+
+lttng::invalid_argument_error::invalid_argument_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number) :
+ runtime_error(msg, file_name, function_name, line_number)
+{
+}
throw lttng::posix_error(msg, errno_code, __FILE__, __func__, __LINE__)
#define LTTNG_THROW_ERROR(msg) \
throw lttng::runtime_error(msg, __FILE__, __func__, __LINE__)
+#define LTTNG_THROW_COMMUNICATION_ERROR(msg) \
+ throw lttng::communication_error(msg, __FILE__, __func__, __LINE__)
+#define LTTNG_THROW_PROTOCOL_ERROR(msg) \
+ throw lttng::protocol_error(msg, __FILE__, __func__, __LINE__)
+#define LTTNG_THROW_INVALID_ARGUMENT_ERROR(msg) \
+ throw lttng::invalid_argument_error(msg, __FILE__, __func__, __LINE__)
namespace lttng {
+class runtime_error : public std::runtime_error {
+public:
+ explicit runtime_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number);
+};
namespace ctl {
/* Wrap lttng_error_code errors which may be reported through liblttng-ctl's interface. */
-class error : public std::runtime_error {
+class error : public runtime_error {
public:
explicit error(lttng_error_code error_code,
- const char *file_name,
- const char *function_name,
- unsigned int line_number);
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number);
lttng_error_code get_code() const;
private:
class posix_error : public std::system_error {
public:
- explicit posix_error(const std::string &msg,
- int errno_code,
- const char *file_name,
- const char *function_name,
- unsigned int line_number);
+ explicit posix_error(const std::string& msg,
+ int errno_code,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number);
};
-class runtime_error : public std::runtime_error {
+class communication_error : public runtime_error {
+public:
+ explicit communication_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number);
+};
+
+class protocol_error : public communication_error {
+public:
+ explicit protocol_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number);
+};
+
+class invalid_argument_error : public runtime_error {
public:
- explicit runtime_error(const std::string &msg,
- const char *file_name,
- const char *function_name,
- unsigned int line_number);
+ explicit invalid_argument_error(const std::string& msg,
+ const char *file_name,
+ const char *function_name,
+ unsigned int line_number);
};
}; /* namespace lttng */