1 // ANNA - Anna is Not 'N' Anymore
3 // (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
5 // https://bitbucket.org/testillano/anna
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions
11 // * Redistributions of source code must retain the above copyright
12 // notice, this list of conditions and the following disclaimer.
13 // * Redistributions in binary form must reproduce the above
14 // copyright notice, this list of conditions and the following disclaimer
15 // in the documentation and/or other materials provided with the
17 // * Neither the name of Google Inc. nor the names of its
18 // contributors may be used to endorse or promote products derived from
19 // this software without specific prior written permission.
21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 // Authors: eduardo.ramos.testillano@gmail.com
34 // cisco.tierra@gmail.com
37 #ifndef anna_ldap_ResultCode_hpp
38 #define anna_ldap_ResultCode_hpp
49 Modela el resultado de las peticiones enviadas a servidores LDAP.
52 \see ldap::Session::eventResponse
59 ResultCode() : a_value(0) {;}
62 Devuelve \em true si la respuesta recibida es correcta o \em false en otro caso.
63 \return \em true si la respuesta recibida es correcta o \em false en otro caso.
65 bool isOk() const throw() { return a_value == 0; }
68 Devuelve \em true si la respuesta recibida es un error debido a que las credenciales del usuario
69 no son válidas para conectar al servidor o \em false en otro caso.
71 \return \em true si la respuesta recibida es un error debido a que las credenciales del usuario
72 no son válidas para conectar al servidor o \em false en otro caso.
74 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
75 haya retornado \em false.
77 bool isInvalidCredential() const throw();
80 Devuelve \em true si la resulta recibida es LDAP_OPERATIONS_ERROR o \em false en otro caso.
82 \return \em true si la resulta recibida es LDAP_OPERATIONS_ERROR o \em false en otro caso.
84 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
85 haya retornado \em false.
87 bool isOperationsError() const throw();
90 Devuelve \em true si la resulta recibida es LDAP_PROTOCOL_ERROR o \em false en otro caso.
92 \return \em true si la resulta recibida es LDAP_PROTOCOL_ERROR o \em false en otro caso.
94 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
95 haya retornado \em false.
97 bool isProtocolError() const throw();
100 Devuelve \em true si la resulta recibida es LDAP_TIMELIMIT_EXCEEDED o \em false en otro caso.
102 \return \em true si la resulta recibida es LDAP_TIMELIMIT_EXCEEDED o \em false en otro caso.
104 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
105 haya retornado \em false.
107 bool isTimeLimitExceeded() const throw();
110 Devuelve \em true si la resulta recibida es LDAP_SIZELIMIT_EXCEEDED o \em false en otro caso.
112 \return \em true si la resulta recibida es LDAP_SIZELIMIT_EXCEEDED o \em false en otro caso.
114 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
115 haya retornado \em false.
117 bool isSizeLimitExceeded() const throw();
120 Devuelve \em true si la resulta recibida es LDAP_AUTH_METHOD_NOT_SUPPORTED o \em false en otro caso.
122 \return \em true si la resulta recibida es LDAP_AUTH_METHOD_NOT_SUPPORTED o \em false en otro caso.
124 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
125 haya retornado \em false.
127 bool isAuthMethodNotSupported() const throw();
130 Devuelve \em true si la resulta recibida es LDAP_STRONG_AUTH_REQUIRED o \em false en otro caso.
132 \return \em true si la resulta recibida es LDAP_STRONG_AUTH_REQUIRED o \em false en otro caso.
134 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
135 haya retornado \em false.
137 bool isStrongAuthRequired() const throw();
140 Devuelve \em true si la resulta recibida es LDAP_SASL_BIND_IN_PROGRESS o \em false en otro caso.
142 \return \em true si la resulta recibida es LDAP_SASL_BIND_IN_PROGRESS o \em false en otro caso.
144 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
145 haya retornado \em false.
147 bool isSASLBindInProgress() const throw();
150 Devuelve \em true si la resulta recibida es un error de tipo LDAP_ATTR_ERROR o \em false en otro caso,
151 Puede darse al usar atributos no definidos, tipos inapropiados, comparaciones entre tipos no convertibles
152 o errores sintáxticos en general.
154 \return \em true si la resulta recibida es un error de tipo LDAP_ATTR_ERROR o \em false en otro caso.
156 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
157 haya retornado \em false.
159 bool isAttrError() const throw();
162 Devuelve \em true si la resulta recibida es un error de tipo LDAP_NAME_ERROR o \em false en otro caso.
163 Puede dar al usar objetos o alias no definidos o usar una sinstaxis no válida en el DN.
165 \return \em true si la resulta recibida es un error de tipo LDAP_NAME_ERROR o \em false en otro caso.
167 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
168 haya retornado \em false.
170 bool isNameError() const throw();
173 Devuelve \em true si la resulta recibida es un error de tipo LDAP_SECURITY_ERROR o \em false en otro caso.
174 Puede darse por una autorización inapropiada, por presentar una credencial inválida o por intentar acceder
175 a información sin los privilegios suficientes.
177 Incluye el valor del método #isInvalidCredential.
179 \return \em true si la resulta recibida es un error de tipo LDAP_SECURITY_ERROR o \em false en otro caso.
181 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
182 haya retornado \em false.
184 bool isSecurityError() const throw();
187 Devuelve \em true si la resulta recibida es un error de tipo LDAP_SERVICE_ERROR o \em false en otro caso.
188 Puede darse cuando el servicio no esté disponible.
190 \return \em true si la resulta recibida es un error de tipo LDAP_SERVICE_ERROR o \em false en otro caso.
192 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
193 haya retornado \em false.
195 bool isServiceError() const throw();
198 Devuelve \em true si la resulta recibida es un error de tipo LDAP_TIMEOUT o \em false en otro caso.
200 \return \em true si la resulta recibida es un error de tipo LDAP_TIMEOUT o \em false en otro caso.
202 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
203 haya retornado \em false.
205 bool isTimeout() const throw();
208 Devuelve \em true si la resulta recibida es un error de tipo LDAP_UNAVAILABLE o \em false en otro caso.
210 \return \em true si la resulta recibida es un error de tipo LDAP_UNAVAILABLE o \em false en otro caso.
212 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
213 haya retornado \em false.
215 bool isUnavailable() const throw();
218 Devuelve \em true si la resulta recibida es un error de tipo LDAP_SERVER_DOWN o \em false en otro caso.
220 \return \em true si la resulta recibida es un error de tipo LDAP_SERVER_DOWN o \em false en otro caso.
222 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
223 haya retornado \em false.
225 bool isServerDown() const throw();
228 Devuelve \em true si la resulta recibida es un error de tipo LDAP_LOCAL_ERROR o \em false en otro caso.
230 \return \em true si la resulta recibida es un error de tipo LDAP_LOCAL_ERROR o \em false en otro caso.
232 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
233 haya retornado \em false.
235 bool isLocalError() const throw();
238 Devuelve \em true si la resulta recibida es un error de tipo LDAP_DECODING_ERROR o \em false en otro caso.
240 \return \em true si la resulta recibida es un error de tipo LDAP_DECODING_ERROR o \em false en otro caso.
242 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
243 haya retornado \em false.
245 bool isDecodingError() const throw();
248 Devuelve \em true si la resulta recibida es un error de tipo LDAP_FILTER_ERROR o \em false en otro caso.
250 \return \em true si la resulta recibida es un error de tipo LDAP_FILTER_ERROR o \em false en otro caso.
252 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
253 haya retornado \em false.
255 bool isFilterError() const throw();
258 Devuelve \em true si la resulta recibida es un error de tipo LDAP_CONNECT_ERROR o \em false en otro caso.
260 \return \em true si la resulta recibida es un error de tipo LDAP_CONNECT_ERROR o \em false en otro caso.
262 \warning El valor retornado por este método sólo tendrá validez en caso de que el método #isOk
263 haya retornado \em false.
265 bool isConnectError() const throw();
268 Devuelve el codigo de error asociado a esta instancia.
269 \return El codigo de error asociado a esta instancia.
271 int getValue() const throw() { return a_value; }
274 Devuelve el texto explicativo del error asociado a esta instancia.
275 \return El texto explicativo del error asociado a esta instancia.
277 const std::string& getText() const throw() { return a_text; }
280 Establece el codigo de error asociado a esta instancia.
281 \param value Codigo de error
283 // void setValue (const int value) throw () { a_value = value; }
286 Establece el texto explicativo del error asociado a esta instancia.
287 \param text Texto explicativo del error
289 // void setText (const std::string& text) throw () { a_text = text; }
292 Inicializa el codigo de error y el texto de esta instancia.
294 void clear() throw() { a_value = 0; a_text.clear(); }
298 \param other Instancia de la que copiar.
299 \return La instancia de el mismo despues de copiar los valores.
301 ResultCode& operator= (const ResultCode& other) throw() {
302 a_value = other.a_value;
303 a_text = other.a_text;
308 * Operador de asignación.
309 * \param ldap_result Código de resultado con el que iniciar esta instancia.
310 * \warning Si el valor de \em ldap_result no fue obtenido como resultado de ejecutar alguna operacion LDAP
311 * el resultado de este método no está definido.
313 ResultCode& operator= (const int ldap_result) throw();
315 bool operator == (const int n) const throw() { return a_value == n; }
316 bool operator != (const int n) const throw() { return a_value != n; }
317 bool operator < (const int n) const throw() { return a_value < n; }
318 bool operator <= (const int n) const throw() { return a_value <= n; }
321 Devuelve una cadena con la informacion relevante sobre esta instancia.
322 \return Una cadena con la informacion relevante sobre esta instancia.
324 const std::string asString() const throw();
330 ResultCode(const int ldap_method_result);
332 void setValue(const int ldap_method_result, const int ldap_method_error) throw();
334 bool extractResultCode(const Session*) throw();
336 friend class Session;