]> git.sur5r.net Git - openldap/blobdiff - contrib/ldapc++/src/LDAPException.cpp
Merge remote branch 'origin/mdb.master'
[openldap] / contrib / ldapc++ / src / LDAPException.cpp
index 46fd2faba489c80c75fdf7d2f23fcb41d878d38d..893af2d2569472d69b94cd4bfe8ca08b713ef92a 100644 (file)
@@ -1,26 +1,29 @@
+// $OpenLDAP$
 /*
- * Copyright 2000, OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 2000-2013 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
-
-
 #include <ldap.h>
 #include "config.h"
 #include "LDAPException.h"
-#include "LDAPReferralException.h"
 
 #include "LDAPAsynConnection.h"
+#include "LDAPResult.h"
 
 using namespace std;
 
-LDAPException::LDAPException(int res_code, const string& err_string){
+LDAPException::LDAPException(int res_code, const string& err_string) throw()
+    : std::runtime_error(err_string)
+{
        m_res_code=res_code;
        m_res_string=string(ldap_err2string(res_code));
     m_err_string=err_string;
 }
 
-LDAPException::LDAPException(const LDAPAsynConnection *lc){
+LDAPException::LDAPException(const LDAPAsynConnection *lc) throw()
+    : std::runtime_error("")
+{
     LDAP *l = lc->getSessionHandle();
     ldap_get_option(l,LDAP_OPT_RESULT_CODE,&m_res_code);
     const char *res_cstring = ldap_err2string(m_res_code);
@@ -30,7 +33,12 @@ LDAPException::LDAPException(const LDAPAsynConnection *lc){
         m_res_string = "";
     }
     const char* err_string;
-    ldap_get_option(l,LDAP_OPT_DIAGNOSTIC_MESSAGE,&err_string);
+
+#ifdef LDAP_OPT_DIAGNOSTIC_MESSAGE
+    ldap_get_option(l,LDAP_OPT_DIAGNOSTIC_MESSAGE ,&err_string);
+#else
+    ldap_get_option(l,LDAP_OPT_ERROR_STRING,&err_string);
+#endif
     if ( err_string ) {
         m_err_string = string(err_string);
     } else {
@@ -38,22 +46,32 @@ LDAPException::LDAPException(const LDAPAsynConnection *lc){
     }
 }
 
-LDAPException::~LDAPException(){
+LDAPException::~LDAPException() throw()
+{
 }
 
-int LDAPException::getResultCode() const{
+int LDAPException::getResultCode() const throw()
+{
        return m_res_code;
 }
 
-const string& LDAPException::getResultMsg() const{
+const string& LDAPException::getResultMsg() const throw()
+{
        return m_res_string;
 }
 
-const string& LDAPException::getServerMsg() const{
+const string& LDAPException::getServerMsg() const throw()
+{
     return m_err_string;
 }
 
-ostream& operator << (ostream& s, LDAPException e){
+const char* LDAPException::what() const throw()
+{
+    return this->m_res_string.c_str(); 
+}
+
+ostream& operator << (ostream& s, LDAPException e) throw()
+{
        s << "Error " << e.m_res_code << ": " << e.m_res_string;
        if (!e.m_err_string.empty()) {
                s << endl <<  "additional info: " << e.m_err_string ;
@@ -61,3 +79,18 @@ ostream& operator << (ostream& s, LDAPException e){
        return s;
 }
 
+
+LDAPReferralException::LDAPReferralException(const LDAPUrlList& urls) throw() 
+        : LDAPException(LDAPResult::REFERRAL) , m_urlList(urls)
+{
+}
+
+LDAPReferralException::~LDAPReferralException() throw()
+{
+}
+
+const LDAPUrlList& LDAPReferralException::getUrls() throw()
+{
+    return m_urlList;
+}
+