diff options
Diffstat (limited to 'contrib/ldapc++/src/LDAPResult.h')
-rw-r--r-- | contrib/ldapc++/src/LDAPResult.h | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/contrib/ldapc++/src/LDAPResult.h b/contrib/ldapc++/src/LDAPResult.h new file mode 100644 index 0000000..7fb42b6 --- /dev/null +++ b/contrib/ldapc++/src/LDAPResult.h @@ -0,0 +1,162 @@ +// $OpenLDAP$ +/* + * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved. + * COPYING RESTRICTIONS APPLY, see COPYRIGHT file + */ + + +#ifndef LDAP_RESULT_H +#define LDAP_RESULT_H + +#include<iostream> +#include<ldap.h> +#include <LDAPMessage.h> +#include <LDAPControlSet.h> +#include <LDAPUrlList.h> + +class LDAPRequest; +class LDAPAsynConnection; + +/** + * This class is for representing LDAP-Result-Messages. + * + * It represents all Messages that were returned + * from LDAP-Operations except for Messages of the Type + * LDAPMsg::SEARCH_ENTRY, LDAPMsg::SEARCH_REFERENCE and + * LDAPMsg::EXTENDED_RESPONSE. <BR> + * It defines a integer constant for every possible result type that can be + * returned by the server. + */ +class LDAPResult : public LDAPMsg{ + public : + //Error codes from RFC 2251 + static const int SUCCESS = 0; + static const int OPERATIONS_ERROR = 1; + static const int PROTOCOL_ERROR = 2; + static const int TIME_LIMIT_EXCEEDED = 3; + static const int SIZE_LIMIT_EXCEEDED = 4; + static const int COMPARE_FALSE = 5; + static const int COMPARE_TRUE = 6; + static const int AUTH_METHOD_NOT_SUPPORTED = 7; + static const int STRONG_AUTH_REQUIRED = 8; + + static const int REFERRAL = 10; + static const int ADMIN_LIMIT_EXCEEDED = 11; + static const int UNAVAILABLE_CRITICAL_EXTENSION = 12; + static const int CONFIDENTIALITY_REQUIRED = 13; + static const int SASL_BIND_IN_PROGRESS = 14; + + static const int NO_SUCH_ATTRIBUTE = 16; + static const int UNDEFINED_ATTRIBUTE_TYP = 17; + static const int INAPPROPRIATE_MATCHING = 18; + static const int CONSTRAINT_VIOLATION = 19; + static const int ATTRIBUTE_OR_VALUE_EXISTS = 20; + static const int INVALID_ATTRIBUTE_SYNTAX = 21; + + static const int NO_SUCH_OBJECT = 32; + static const int ALIAS_PROBLEM = 33; + static const int INVALID_DN_SYNTAX = 34; + + static const int ALIAS_DEREFERENCING_PROBLEM = 36; + + static const int INAPPROPRIATE_AUTENTICATION = 48; + static const int INVALID_CREDENTIALS = 49; + static const int INSUFFICIENT_ACCESS = 50; + static const int BUSY = 51; + static const int UNAVAILABLE = 52; + static const int UNWILLING_TO_PERFORM = 53; + static const int LOOP_DETECT = 54; + + static const int NAMING_VIOLATION = 64; + static const int OBJECT_CLASS_VIOLATION = 65; + static const int NOT_ALLOWED_ON_NONLEAF = 66; + static const int NOT_ALLOWED_ON_RDN = 67; + static const int ENTRY_ALREADY_EXISTS = 68; + static const int OBJECT_CLASS_MODS_PROHIBITED = 69; + + static const int AFFECTS_MULTIPLE_DSAS = 71; + + // some Errorcodes defined in the LDAP C API DRAFT + static const int OTHER = 80; + static const int SERVER_DOWN = 81; + static const int LOCAL_ERROR = 82; + static const int ENCODING_ERROR = 83; + static const int DECODING_ERROR = 84; + static const int TIMEOUT = 85; + static const int AUTH_UNKNOWN = 86; + static const int FILTER_ERROR = 87; + static const int USER_CANCELLED = 88; + static const int PARAM_ERROR = 89; + static const int NO_MEMORY = 90; + static const int CONNECT_ERROR = 91; + static const int NOT_SUPPORTED = 92; + static const int CONTROL_NOT_FOUND = 93; + static const int NO_RESULTS_RETURNED = 94; + static const int MORE_RESULTS_TO_RETURN = 95; + static const int CLIENT_LOOP = 96; + static const int REFERRAL_LIMIT_EXCEEDED = 97; + + /** + * This constructor is called by the LDAPMsg::create method in + * order to parse a LDAPResult-Message + * @param req The request the result is associated with. + * @param msg The LDAPMessage-structure that contains the + * Message. + */ + LDAPResult(const LDAPRequest *req, LDAPMessage *msg); + LDAPResult(int type, int resultCode, const std::string &msg); + + /** + * The destructor. + */ + virtual ~LDAPResult(); + + /** + * @returns The result code of the Message. Possible values are the + * integer constants defined in this class. + */ + int getResultCode() const; + + /** + * This method transforms the result code to a human-readable + * result message. + * @returns A std::string containing the result message. + */ + std::string resToString() const; + + /** + * In some case of error the server may return addional error + * messages. + * @returns The additional error message returned by the server. + */ + const std::string& getErrMsg() const; + + /** + * For messages with a result code of: NO_SUCH_OBJECT, + * ALIAS_PROBLEM, ALIAS_DEREFERENCING_PROBLEM or INVALID_DN_SYNTAX + * the server returns the DN of deepest entry in the DIT that could + * be found for this operation. + * @returns The Matched-DN value that was returned by the server. + */ + const std::string& getMatchedDN() const; + + /** + * @returns If the result code is REFERRAL this methode returns the + * URLs of the referral that was sent by the server. + */ + const LDAPUrlList& getReferralUrls() const; + + private : + int m_resCode; + std::string m_matchedDN; + std::string m_errMsg; + LDAPUrlList m_referrals; + + /** + * This method can be used to dump the data of a LDAPResult-Object. + * It is only useful for debugging purposes at the moment + */ + friend std::ostream& operator<<(std::ostream &s,LDAPResult &l); +}; +#endif //LDAP_RESULT_H + |