NetLink Sockets C++  1.0.0
Networking C++ Library
 All Classes Namespaces Files Functions Enumerations Enumerator Pages
exception.h
1 /*
2  NetLink Sockets: Networking C++ library
3  Copyright 2012 Pedro Francisco Pareja Ruiz (PedroPareja@Gmail.com)
4 
5  This file is part of NetLink Sockets.
6 
7  NetLink Sockets is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  NetLink Sockets is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with NetLink Sockets. If not, see <http://www.gnu.org/licenses/>.
19 
20 */
21 
22 #ifndef __NL_EXCEPTION
23 #define __NL_EXCEPTION
24 
25 #include "netlink/core.h"
26 
27 NL_NAMESPACE
28 
36 class Exception {
37 
38  public:
39 
40  enum CODE {
41  #include "netlink/exception.code.inc"
42  };
43 
44  private:
45 
46  CODE _code;
47  string _msg;
48  int _nativeErrorCode;
49 
50  public:
51 
52  Exception(CODE code, const string& msg, int nativeErrorCode = 0): _code(code), _msg(msg), _nativeErrorCode(nativeErrorCode) {}
53 
81  CODE code() const { return _code; }
82 
83 
90  const string& msg() const { return _msg; }
91 
98  const char* what() const { return _msg.c_str(); }
99 
100 
108  int nativeErrorCode() const { return _nativeErrorCode; }
109 };
110 
111 NL_NAMESPACE_END
112 
113 #endif