author | Michael Krelin <hacker@klever.net> | 2005-07-19 13:28:23 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2005-07-19 13:28:23 (UTC) |
commit | 3c07e6e294c424d8aa869c10b6d25fd4fb2c639e (patch) (side-by-side diff) | |
tree | 91d4c64720aa2f93cc10a150f0645d6f9aa3adda | |
parent | d7a8d4e0aac7a71c9f48f2de81c5eb76bae3771d (diff) | |
download | libopkele-3c07e6e294c424d8aa869c10b6d25fd4fb2c639e.zip libopkele-3c07e6e294c424d8aa869c10b6d25fd4fb2c639e.tar.gz libopkele-3c07e6e294c424d8aa869c10b6d25fd4fb2c639e.tar.bz2 |
still finalizing stuff with eliminating konforka requirement
-rw-r--r-- | include/opkele/exception.h | 8 | ||||
-rw-r--r-- | lib/exception.cc | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/include/opkele/exception.h b/include/opkele/exception.h index 2ac0661..c5f5811 100644 --- a/include/opkele/exception.h +++ b/include/opkele/exception.h @@ -1,127 +1,131 @@ #ifndef __OPKELE_EXCEPTION_H #define __OPKELE_EXCEPTION_H /** * @file * @brief opkele exceptions */ #include <curl/curl.h> #include <opkele/opkele-config.h> #ifdef OPKELE_HAVE_KONFORKA # include <konforka/exception.h> /** * the exception parameters declaration */ # define OPKELE_E_PARS const string& fi,const string&fu,int l,const string& w /** * the exception parameters list to pass to constructor */ # define OPKELE_E_CONS_ fi,fu,l, /** * the exception codepoint specification */ # define OPKELE_CP_ CODEPOINT, /** * the simple rethrow of konforka-based exception */ # define OPKELE_RETHROW catch(konforka::exception& e) { e.see(CODEPOINT); throw } #else /* OPKELE_HAVE_KONFORKA */ -# include <stdexcept> +# include <exception> +# include <string> /** * the exception parameter declaration */ # define OPKELE_E_PARS const string& w /** * the dummy prefix for exception parameters list to prepend in the absence of * konforka library */ # define OPKELE_E_CONS_ /** * the dummy placeholder for konforka exception codepoint specification */ # define OPKELE_CP_ /** * the dummy define for the konforka-based rethrow of exception */ # define OPKELE_RETHROW #endif /* OPKELE_HAVE_KONFORKA */ /** * the exception parameters list to pass to constructor */ # define OPKELE_E_CONS OPKELE_E_CONS_ w /* * @brief the main opkele namespace */ namespace opkele { using std::string; /** * the base opkele exception class */ class exception : public # ifdef OPKELE_HAVE_KONFORKA konforka::exception # else std::exception # endif { public: # ifdef OPKELE_HAVE_KONFORKA explicit exception(const string& fi,const string& fu,int l,const string& w) : konforka::exception(fi,fu,l,w) { } # else /* OPKELE_HAVE_KONFORKA */ + string _what; explicit exception(const string& w) - : std::exception(w) { } + : _what(w) { } + virtual ~exception() throw(); + virtual const char * what() const throw(); # endif /* OPKELE_HAVE_KONFORKA */ }; /** * thrown in case of failed conversion */ class failed_conversion : public exception { public: failed_conversion(OPKELE_E_PARS) : exception(OPKELE_E_CONS) { } }; /** * thrown in case of failed lookup (either parameter or persistent store) */ class failed_lookup : public exception { public: failed_lookup(OPKELE_E_PARS) : exception(OPKELE_E_CONS) { } }; /** * thrown in case of bad input (either local or network) */ class bad_input : public exception { public: bad_input(OPKELE_E_PARS) : exception(OPKELE_E_CONS) { } }; /** * thrown on failed assertion */ class failed_assertion : public exception { public: failed_assertion(OPKELE_E_PARS) : exception(OPKELE_E_CONS) { } }; /** * thrown if the handle being retrieved is invalid */ class invalid_handle : public exception { public: invalid_handle(OPKELE_E_PARS) : exception(OPKELE_E_CONS) { } }; /** * thrown if the handle passed to check_authentication request is not * stateless diff --git a/lib/exception.cc b/lib/exception.cc index b7c1702..4fe6c87 100644 --- a/lib/exception.cc +++ b/lib/exception.cc @@ -1,22 +1,32 @@ #include <openssl/err.h> #include <curl/curl.h> #include <opkele/exception.h> namespace opkele { +# ifndef OPKELE_HAVE_KONFORKA + + exception::~exception() throw() { + } + const char *exception::what() const throw() { + return _what.c_str(); + } + +# endif + exception_openssl::exception_openssl(OPKELE_E_PARS) : _error(ERR_peek_last_error()), _ssl_string(ERR_error_string(_error,0)), exception(OPKELE_E_CONS_ w+" ["+_ssl_string+']') { } exception_curl::exception_curl(OPKELE_E_PARS) : _error(CURLE_OK), exception_network(OPKELE_E_CONS) { } exception_curl::exception_curl(OPKELE_E_PARS,CURLcode e) : _error(e), _curl_string(curl_easy_strerror(e)), exception_network(OPKELE_E_CONS_ w+" ["+_curl_string+']') { } } |