1// $OpenLDAP$ 2/* 3 * Copyright 2000-2011 The OpenLDAP Foundation, All Rights Reserved. 4 * COPYING RESTRICTIONS APPLY, see COPYRIGHT file 5 */ 6 7 8#ifndef LDAP_EXCEPTION_H 9#define LDAP_EXCEPTION_H 10 11#include <iostream> 12#include <string> 13#include <stdexcept> 14 15#include <LDAPUrlList.h> 16 17class LDAPAsynConnection; 18 19/** 20 * This class is only thrown as an Exception and used to signalize error 21 * conditions during LDAP-operations 22 */ 23class LDAPException : public std::runtime_error 24{ 25 26 public : 27 /** 28 * Constructs a LDAPException-object from the parameters 29 * @param res_code A valid LDAP result code. 30 * @param err_string An addional error message for the error 31 * that happend (optional) 32 */ 33 LDAPException(int res_code, 34 const std::string& err_string=std::string()) throw(); 35 36 /** 37 * Constructs a LDAPException-object from the error state of a 38 * LDAPAsynConnection-object 39 * @param lc A LDAP-Connection for that an error has happend. The 40 * Constructor tries to read its error state. 41 */ 42 LDAPException(const LDAPAsynConnection *lc) throw(); 43 44 /** 45 * Destructor 46 */ 47 virtual ~LDAPException() throw(); 48 49 /** 50 * @return The Result code of the object 51 */ 52 int getResultCode() const throw(); 53 54 /** 55 * @return The error message that is corresponding to the result 56 * code . 57 */ 58 const std::string& getResultMsg() const throw(); 59 60 /** 61 * @return The addional error message of the error (if it was set) 62 */ 63 const std::string& getServerMsg() const throw(); 64 65 66 virtual const char* what() const throw(); 67 68 /** 69 * This method can be used to dump the data of a LDAPResult-Object. 70 * It is only useful for debugging purposes at the moment 71 */ 72 friend std::ostream& operator << (std::ostream &s, LDAPException e) throw(); 73 74 private : 75 int m_res_code; 76 std::string m_res_string; 77 std::string m_err_string; 78}; 79 80/** 81 * This class extends LDAPException and is used to signalize Referrals 82 * there were received during synchronous LDAP-operations 83 */ 84class LDAPReferralException : public LDAPException 85{ 86 87 public : 88 /** 89 * Creates an object that is initialized with a list of URLs 90 */ 91 LDAPReferralException(const LDAPUrlList& urls) throw(); 92 93 /** 94 * Destructor 95 */ 96 ~LDAPReferralException() throw(); 97 98 /** 99 * @return The List of URLs of the Referral/Search Reference 100 */ 101 const LDAPUrlList& getUrls() throw(); 102 103 private : 104 LDAPUrlList m_urlList; 105}; 106 107#endif //LDAP_EXCEPTION_H 108