Import CStringView from the Babeltrace tree
[lttng-tools.git] / src / common / exception.cpp
index 241686eaf6f4687038f522ed04ccc8d6d5707239..028d253f2d885a6c9d9c29a4dc8c875a40b698f2 100644 (file)
@@ -6,12 +6,14 @@
  */
 
 #include "exception.hpp"
-#include <sstream>
+
 #include <common/error.hpp>
 
+#include <sstream>
+
 namespace {
-std::string format_throw_location(
-               const char *file_name, const char *function_name, unsigned int line_number)
+std::string
+format_throw_location(const char *file_name, const char *function_name, unsigned int line_number)
 {
        std::stringstream location;
 
@@ -22,53 +24,66 @@ std::string format_throw_location(
 }
 } /* namespace */
 
-lttng::ctl::error::error(lttng_error_code error_code,
-               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::ctl::error::error(const std::string& msg,
+                        lttng_error_code error_code,
+                        const char *file_name,
+                        const char *function_name,
+                        unsigned int line_number) :
+       runtime_error(msg + ": " + std::string(error_get_str(error_code)),
+                     file_name,
+                     function_name,
+                     line_number),
+       _error_code{ error_code }
 {
 }
 
 lttng::posix_error::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) :
        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) :
+                                   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::unsupported_error::unsupported_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) :
+                                               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) :
+                                     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) :
+                                                     const char *file_name,
+                                                     const char *function_name,
+                                                     unsigned int line_number) :
        runtime_error(msg, file_name, function_name, line_number)
 {
 }
This page took 0.024848 seconds and 4 git commands to generate.