ANNA Suite  2020b
Multipurpose development suite for Telco applications
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
anna::ldap::Engine Class Referenceabstract

#include <Engine.hpp>

Inheritance diagram for anna::ldap::Engine:
Inheritance graph
[legend]
Collaboration diagram for anna::ldap::Engine:
Collaboration graph
[legend]

Classes

struct  DebugLevel
 

Public Member Functions

bool getAutoBind () const
 
void setAutoBind (const bool autoBind)
 
SessioncreateSession (const char *url, const char *user, const char *password, const int category=0) noexcept(false)
 
SessioncreateSession (const char *url, const int id, const char *user, const char *password, const int category=0) noexcept(false)
 
SessioncreateSession (const char *url, const int category=0) noexcept(false)
 
SessionfindSession (const char *url, const char *user, Exception::Mode::_v emode=Exception::Mode::Throw) noexcept(false)
 
SessionfindSession (const char *url, const int id, Exception::Mode::_v emode=Exception::Mode::Throw) noexcept(false)
 
SessionfindSession (const char *url, Exception::Mode::_v emode=Exception::Mode::Throw) noexcept(false)
 
void closeSession (Session *session) noexcept(false)
 
virtual xml::NodeasXML (xml::Node *parent) const
 
- Public Member Functions inherited from anna::app::Component
virtual ~Component ()
 
void attach () noexcept(false)
 
virtual std::string asString () const
 
- Public Member Functions inherited from anna::Component
const char * getClassName () const
 
- Public Member Functions inherited from anna::Mutex
 Mutex (const Mode::_v mode=Mode::Recursive)
 
virtual ~Mutex ()
 
virtual void lock () noexcept(false)
 
virtual void unlock ()
 
bool trylock () noexcept(false)
 
 operator const pthread_mutex_t * () const
 

Static Public Member Functions

static const char * getClassName ()
 
static int setDebugLevel (const int level) noexcept(false)
 

Protected Member Functions

 Engine ()
 
virtual SessionallocateSession (const int category)=0
 
virtual void releaseSession (Session *)=0
 
- Protected Member Functions inherited from anna::app::Component
 Component (const char *className)
 
State::_v getState () const
 
void addPredecessor (const char *componentName)
 
void initialize () noexcept(false)
 
void stop ()
 
virtual void kill ()
 
- Protected Member Functions inherited from anna::Component
 Component (const char *className)
 
 Component (const Component &other)
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Additional Inherited Members

- Protected Attributes inherited from anna::Component
const std::string a_className
 

Detailed Description

Gestor general de conexiones realizadas a diversos servidores LDAP.

Optimiza la creacion, busqueda y liberacion de las sesiónes establecidas contra un numero indeterminado de servidores LDAP.

El siguiente codigo muestra un ejemplo de implementacion:

class MyEngine : public ldap::Engine {
public:
MyEngine () {;}
private:
anna::ldap::Session* allocateSession (const int category) { return a_sessions.create (); }
MySession* aux = static_cast <MySession*> (session);
a_sessions.release (aux);
}
};

Constructor & Destructor Documentation

◆ Engine()

anna::ldap::Engine::Engine ( )
protected

Constructor.

Member Function Documentation

◆ allocateSession()

virtual Session* anna::ldap::Engine::allocateSession ( const int  category)
protectedpure virtual

Metodo invocado para instanciar sesiónes.

Para la creacion y liberacion de sesiónes es muy aconsejable usar el patron anna::Recycler.

Parameters
categoryIdentifica la categoria o clase de sesión que deseamos instanciar. Este paremetro es el mismo indicado en el createSession. Facilita que una misma aplicacion pueda crear un numero indeterminado de sesiónes de distintos tipos, es decir, que actuen de forma distinta a la hora de recoger los resultados de las peticiones.
See also
anna::Recycler

◆ asXML()

virtual xml::Node* anna::ldap::Engine::asXML ( xml::Node parent) const
virtual

Devuelve un documento XML con la informacion relevante sobre esta instancia.

Parameters
parentNodo XML del que colgar la informacion referente a esta instancia.
Returns
Un documento XML con la informacion relevante sobre esta instancia.

Reimplemented from anna::app::Component.

◆ closeSession()

void anna::ldap::Engine::closeSession ( Session session)
noexcept

Libera todos los recursos asociados a una sesión LDAP, creada previemante con createSession. Si la sesión fuera NULL esta operación no tendrá ningún efecto.

Parameters
sessionSession LDAP a liberar.

◆ createSession() [1/3]

Session* anna::ldap::Engine::createSession ( const char *  url,
const char *  user,
const char *  password,
const int  category = 0 
)
noexcept

Crea o reusa una sesión LDAP con los parámetros recibidos.

Las sesiónes LDAP estaran definidas univocamente por la pareja (url, user) si al invocar a este metodo ya existiera una sesión identificada por los mismos parámetros recibidos, se devolvera su instancia.

Si no existe una sesión identificada por la pareja (url, user) se creara mediate la llamada al metodo virtual puro (allocateSession), se realizara la peticion de conexion y se devolvera esta nueva instancia.

Dependiendo del indicador de conexión automática se solicitará la conexión al servidor o será el programador quien tenga que invocarlo mediate la llamada al método ldap::Session::bind.

Parameters
urlDireccion donde atiende peticiones el servidor LDAP.
userUsuario requerido para establecer la conexion contra el servidor LDAP.
passwordPassword requerido para establecer la conexion contra el servidor LDAP.
categoryIdentifica el tipo de sesión a crear.
Returns
La session identificada por la url y user indicados como parametro.
Warning
La conexion no estara totalmente operativa hasta que no se reciba la notificacion correspondiente en el metodo Session::eventResponse confirmando que el ClassCode::Bind se ha realizado correctamente.

◆ createSession() [2/3]

Session* anna::ldap::Engine::createSession ( const char *  url,
const int  id,
const char *  user,
const char *  password,
const int  category = 0 
)
noexcept

Crea o reusa una sesión LDAP con los parámetros recibidos.

Las sesiónes LDAP estaran definidas univocamente por la pareja (url, id) si al invocar a este metodo ya existiera una sesión identificada por los mismos parámetros recibidos, se devolvera su instancia.

Si no existe una sesión identificada por la pareja (url, id) se creara mediate la llamada al metodo virtual puro (allocateSession), se realizara la peticion de conexion y se devolvera esta nueva instancia.

Dependiendo del indicador de conexión automática se solicitará la conexión al servidor o será el programador quien tenga que invocarlo mediate la llamada al método ldap::Session::bind.

Parameters
urlDireccion donde atiende peticiones el servidor LDAP.
idIdentificador usado para identificar la sesión.
userUsuario requerido para establecer la conexion contra el servidor LDAP.
passwordPassword requerido para establecer la conexion contra el servidor LDAP.
categoryIdentifica el tipo de sesión a crear.
Returns
La session identificada por la url y id indicados como parametro.
Warning
La conexion no estara totalmente operativa hasta que no se reciba la notificacion correspondiente en el metodo Session::eventResponse confirmando que el ClassCode::Bind se ha realizado correctamente.

◆ createSession() [3/3]

Session* anna::ldap::Engine::createSession ( const char *  url,
const int  category = 0 
)
inlinenoexcept

Crea o reusa una sesión LDAP con los parámetros recibidos a un servidor que no requiera identificar el usuario que solicita la conexion.

Las sesiónes LDAP estaran definidas univocamente por la pareja (url, user="") si al invocar a este metodo ya existiera una sesión identificada por los mismos parámetros recibidos, se devolvera su instancia.

Si no existe una sesión identificada por la pareja (url, user="") se creara mediate la llamada al metodo virtual puro (allocateSession), se realizara la peticion de conexion y se devolvera esta nueva instancia.

Parameters
urlDireccion donde atiende peticiones el servidor LDAP.
categoryIdentifica el tipo de sesión a crear.
Returns
La session identificada por la url indicada como parametro.
Warning
La conexion no estara totalmente operativa hasta que no se reciba la notificacion correspondiente en el metodo Session::eventResponse confirmando que el ClassCode::Bind se ha realizado correctamente.
152  {
153  return createSession(url, NULL, NULL, category);
154  }
Session * createSession(const char *url, const char *user, const char *password, const int category=0) noexcept(false)
Here is the call graph for this function:

◆ findSession() [1/3]

Session* anna::ldap::Engine::findSession ( const char *  url,
const char *  user,
Exception::Mode::_v  emode = Exception::Mode::Throw 
)
noexcept

Devuelve la instancia de la sesión identificada por la pareja (url, user) recibidos como parámetros.

Parameters
urlDireccion de la maquina donde atiendo peticiones el servidor LDAP.
userUsuario requerido para establecer la conexion contra el servidor LDAP.
emodeModo de actuar en caso de que no exista una sesión que coincida con los parámetros indicados.
Returns
La instancia de la sesión identificada por la pareja (url, user) recibidos como parámetros.
Warning
Si no hay ninguna sesión identificada por la pareja (url, user) se devolvera una excepción.

◆ findSession() [2/3]

Session* anna::ldap::Engine::findSession ( const char *  url,
const int  id,
Exception::Mode::_v  emode = Exception::Mode::Throw 
)
noexcept

Devuelve la instancia de la sesión identificada por la pareja (url, id) recibidos como parámetros.

Parameters
urlDireccion de la maquina donde atiendo peticiones el servidor LDAP.
idIdentificador indicado para establecer la conexion contra el servidor LDAP.
emodeModo de actuar en caso de que no exista una sesión que coincida con los parámetros indicados.
Returns
La instancia de la sesión identificada por la pareja (url, id) recibidos como parámetros.
Warning
Si no hay ninguna sesión identificada por la pareja (url, id) se devolvera una excepción.

◆ findSession() [3/3]

Session* anna::ldap::Engine::findSession ( const char *  url,
Exception::Mode::_v  emode = Exception::Mode::Throw 
)
inlinenoexcept

Devuelve la instancia de la sesión identificada por la pareja (url, user="") recibidos como parámetros.

Parameters
urlDireccion de la maquina donde atiendo peticiones el servidor LDAP.
emodeModo de actuar en caso de que no exista una sesión que coincida con los parámetros indicados.
Returns
La instancia de la sesión identificada por la pareja (url, user="") recibidos como parámetros.
Warning
Si no hay ninguna sesión identificada por la pareja (url, user) se devolvera una excepción.
192  {
193  return findSession(url, (const char*) NULL, emode);
194  }
Session * findSession(const char *url, const char *user, Exception::Mode::_v emode=Exception::Mode::Throw) noexcept(false)
Here is the call graph for this function:

◆ getAutoBind()

bool anna::ldap::Engine::getAutoBind ( ) const
inline

Devuelve el valor del indicador de conexión automática. Por defecto este indicador será true.

Returns
el valor del indicador de conexión automática.
62 { return a_autoBind; }

◆ getClassName()

static const char* anna::ldap::Engine::getClassName ( )
inlinestatic

Devuelve el nombre lógico de este anna::app::Component.

Returns
El nombre lógico de este anna::app::Component.
214 { return "anna::ldap::Engine"; }
Here is the call graph for this function:

◆ releaseSession()

virtual void anna::ldap::Engine::releaseSession ( Session )
protectedpure virtual

Metodo invocado para liberar sesiónes. En caso de que nuestra aplicacion requiera varios tipos de sesiónes LDAP habra que tener en cuenta el valor devuelto por ldap::Session::getCategory y liberar el tipo adecuado de sesión.

See also
anna::Recycler

◆ setAutoBind()

void anna::ldap::Engine::setAutoBind ( const bool  autoBind)
inline

Establece el indicador de conexión automática. En caso de no indicarse será true.

Parameters
autoBindValor que tomará el indicador de conexión automática.

Si es necesario cambiar el temporizador del Bind de una sesión LDAP, primero habrá que crearla sin conexión automática, cambiar el temporizador asociado e invocar al Bind invocando implícitamente al método ldap::Session::bind.

72 { a_autoBind = autoBind; }
Here is the call graph for this function:

◆ setDebugLevel()

static int anna::ldap::Engine::setDebugLevel ( const int  level)
staticnoexcept

Establece el nivel de depuración de las operaciones del OpenLDAP.

Parameters
levelMáscara que indica los elementos a depurar. Básicamente 0 para desactivar las trazas de depuración y -1 para activar el trazado de todo.
Returns
El nivel de depuración anterior.
See also
http://www.openldap.org/doc/admin23/runningslapd.html para más niveles.
DebugLevel

The documentation for this class was generated from the following file: