X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fexception.hpp;h=e43094bb6e3a0baae83466295b4f41abba1d3047;hb=28f23191dcbf047429d51950a337a57d7a3f866a;hp=b7e8261ed65217f5652fd88192c37e78c178dd76;hpb=baac5795bc71176909898f7fcbf59dc822f11f4f;p=lttng-tools.git diff --git a/src/common/exception.hpp b/src/common/exception.hpp index b7e8261ed..e43094bb6 100644 --- a/src/common/exception.hpp +++ b/src/common/exception.hpp @@ -8,17 +8,18 @@ #ifndef LTTNG_EXCEPTION_H_ #define LTTNG_EXCEPTION_H_ -#include +#include + #include +#include #include -#include - -#define LTTNG_THROW_CTL(error_code) \ +#define LTTNG_THROW_CTL(msg, error_code) \ throw lttng::ctl::error(msg, error_code, __FILE__, __func__, __LINE__) #define LTTNG_THROW_POSIX(msg, errno_code) \ throw lttng::posix_error(msg, errno_code, __FILE__, __func__, __LINE__) -#define LTTNG_THROW_ERROR(msg) \ +#define LTTNG_THROW_ERROR(msg) throw lttng::runtime_error(msg, __FILE__, __func__, __LINE__) +#define LTTNG_THROW_UNSUPPORTED_ERROR(msg) \ throw lttng::runtime_error(msg, __FILE__, __func__, __LINE__) #define LTTNG_THROW_COMMUNICATION_ERROR(msg) \ throw lttng::communication_error(msg, __FILE__, __func__, __LINE__) @@ -31,57 +32,70 @@ 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); + const char *file_name, + const char *function_name, + unsigned int line_number); +}; + +class unsupported_error : public std::runtime_error { +public: + explicit unsupported_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 runtime_error { public: - explicit error(lttng_error_code error_code, - const char *file_name, - const char *function_name, - unsigned int line_number); - lttng_error_code get_code() const; + explicit error(const std::string& msg, + lttng_error_code error_code, + const char *file_name, + const char *function_name, + unsigned int line_number); + + lttng_error_code code() const noexcept + { + return _error_code; + } private: - lttng_error_code _error_code; + const lttng_error_code _error_code; }; } /* namespace ctl */ 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); + int errno_code, + const char *file_name, + const char *function_name, + unsigned int line_number); }; 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); + 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); + const char *file_name, + const char *function_name, + unsigned int line_number); }; class invalid_argument_error : public runtime_error { public: explicit invalid_argument_error(const std::string& msg, - const char *file_name, - const char *function_name, - unsigned int line_number); + const char *file_name, + const char *function_name, + unsigned int line_number); }; }; /* namespace lttng */