1 /*
2  * Summary: Exceptions for the C++ interface
3  *
4  * Copy: See Copyright for the status of this software.
5  *
6  */
7 
8 /**
9  * @file
10  * @brief Exception declarations
11  */
12 
13 #ifndef LIBMEMACHED_EXCEPTION_HPP
14 #define LIBMEMACHED_EXCEPTION_HPP
15 
16 #include <stdexcept>
17 #include <string>
18 
19 namespace memcache
20 {
21   class Exception : public std::runtime_error
22   {
23   public:
Exception(const std::string& msg, int in_errno)24     Exception(const std::string& msg, int in_errno)
25       :
26         std::runtime_error(msg),
27         _errno(in_errno)
28     {}
29 
Exception(const char *msg, int in_errno)30     Exception(const char *msg, int in_errno)
31       :
32         std::runtime_error(std::string(msg)),
33         _errno(in_errno) {}
34 
~Exception()35     virtual ~Exception() throw() {}
36 
getErrno() const37     int getErrno() const
38     {
39       return _errno;
40     }
41 
42   private:
43     int _errno;
44   };
45 
46   class Warning : public Exception
47   {
48   public:
Warning(const std::string& msg, int in_errno)49     Warning(const std::string& msg, int in_errno) : Exception(msg, in_errno) {}
Warning(const char *msg, int in_errno)50     Warning(const char *msg, int in_errno) : Exception(msg, in_errno) {}
51   };
52 
53   class Error : public Exception
54   {
55   public:
Error(const std::string& msg, int in_errno)56     Error(const std::string& msg, int in_errno) : Exception(msg, in_errno) {}
Error(const char *msg, int in_errno)57     Error(const char *msg, int in_errno) : Exception(msg, in_errno) {}
~Error()58     virtual ~Error() throw() {}
59   };
60 
61 } /* namespace libmemcached */
62 
63 #endif /* LIBMEMACHED_EXCEPTION_HPP */
64