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

#include <Session.hpp>

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

Classes

struct  Option
 
struct  State
 

Public Member Functions

const std::string & getURL () const
 
const std::string & getUser () const
 
const std::string & getPassword () const
 
int getCategory () const
 
int getExternalID () const
 
void * getLDAP ()
 
int getDangerousFileDescriptor () const noexcept(false)
 
Option::Defer::_v getDefer () const
 
Option::Referral::_v getReferral () const
 
State::_v getState () const
 
const MillisecondgetTimeout (const ClassCode::_v v) const
 
Millisecond getNetworkTimeout () const
 
bool hasNetworkTimeout () const
 
void bind () noexcept(false)
 
bool isBound () const
 
void setOption (const Option::Defer::_v defer)
 
void setOption (const Option::Referral::_v referral)
 
void setNetworkTimeout (const Millisecond &timeout)
 
void clearNetworkTimeout ()
 
void setTimeout (const ClassCode::_v v, const Millisecond &millisecond)
 
const Responsesend (const Request *request) noexcept(false)
 
const Responsesend (const Request &request) noexcept(false)
 
void unbind () noexcept(false)
 
std::string asString () const
 
xml::NodeasXML (xml::Node *parent) const
 
- Public Member Functions inherited from anna::comm::Handler
Type::_v getType () const
 
int getfd () const
 
bool supportCongestionControl () const
 
bool supportTimeout () const
 
bool operator== (const int fd) const
 
virtual ClientSocketgetClientSocket ()
 
void asAttribute (xml::Node *node) const noexcept(false)
 
- Public Member Functions inherited from anna::Runnable
const std::string & getId () const
 
bool hasRequestedStop () const
 
bool isRunning () const
 
void requestStop () noexcept(false)
 
- 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 Attributes

static const Millisecond DefaultTimeout
 

Protected Member Functions

 Session ()
 
virtual void eventServerShutdown ()
 
virtual void eventResponse (const Response &response) noexcept(false)=0
 
virtual void eventResponseError (const ResultCode &resultCode, const bool disconnect)
 
virtual void eventIntermediateResponseError (const Response &response)
 
- Protected Member Functions inherited from anna::comm::Handler
 Handler (Communicator *communicator, const Type::_v type, const int support=Support::CongestionControl)
 
 Handler (const Type::_v type, const int support=Support::CongestionControl)
 
void setfd (const int fd)
 
void setTimeout (const Millisecond &timeout)
 
bool canContinue () const
 
virtual void breakAddress (const in_addr_t &address)
 
virtual void recoverAddress (const in_addr_t &address)
 
virtual bool testClose () noexcept(false)
 
virtual void clone () noexcept(false)
 
- Protected Member Functions inherited from anna::Runnable
 Runnable ()
 
 Runnable (const std::string &id)
 
 Runnable (const char *id)
 
void setId (const std::string &id)
 
void setIsRunning (const bool isRunning)
 
virtual void initialize () noexcept(false)
 
virtual void run () noexcept(false)
 
virtual void terminate ()
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Friends

class Timer
 
class Engine
 

Additional Inherited Members

- Protected Attributes inherited from anna::comm::Handler
Communicatora_communicator
 

Detailed Description

Modela la conexion realizada contra una servidor LDAP.

Constructor & Destructor Documentation

◆ Session()

anna::ldap::Session::Session ( )
protected

Constructor.

See also
ldap::Engine::createSession

Member Function Documentation

◆ asString()

std::string anna::ldap::Session::asString ( ) const
virtual

Devuelve una cadena con la informacion relevante sobre esta instancia.

Returns
Una cadena con la informacion relevante sobre esta instancia.

Reimplemented from anna::comm::Handler.

◆ asXML()

xml::Node* anna::ldap::Session::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::comm::Handler.

◆ bind()

void anna::ldap::Session::bind ( )
noexcept

Solicita la conexion al servidor asociado a esta sesion.

Warning
Solo deberia invocarse directamente este metodo en caso de que el eventResponse notifique no ha sido posible contactar con el servidor indicado.

◆ clearNetworkTimeout()

void anna::ldap::Session::clearNetworkTimeout ( )
inline

Elimina el tiempo asignado en setNetworkTimeout.

See also
http://manpages.courier-mta.org/htmlman3/ldap_get_option.3.html
Warning
Sólo tiene efecto antes de invocar al bind
209 { a_networkTimeout.tv_sec = -1; a_networkTimeout.tv_usec = 0; }

◆ eventIntermediateResponseError()

virtual void anna::ldap::Session::eventIntermediateResponseError ( const Response response)
inlineprotectedvirtual

Método-manejador que se invoca cuando alguno de los mensajes intermedios requeridos para formar la contestación completa no se puede interpretar correctamente.

Parameters
responseObjeto que contiene la respuesta correspondiente a la peticion LDAP realizada.
310 {;}

◆ eventResponse()

virtual void anna::ldap::Session::eventResponse ( const Response response)
protectedpure virtualnoexcept

Metodo-manejador de las respuestas provenientes del servidor LDAP.

Parameters
responseObjeto que contiene la respuesta correspondiente a la peticion LDAP realizada.

◆ eventResponseError()

virtual void anna::ldap::Session::eventResponseError ( const ResultCode resultCode,
const bool  disconnect 
)
inlineprotectedvirtual

Metodo-manejador de los errores provenientes del servidor LDAP.

Parameters
resultCodeInstancia que contiene la información sobre el error recibido.
disconnectIncicador que informa al nivel de aplicación sobre cómo actuará la ANNA.ldap para recuperar este error, si vale true la conexión se cerrará o false en otro caso.
302 {;}

◆ eventServerShutdown()

virtual void anna::ldap::Session::eventServerShutdown ( )
inlineprotectedvirtual

Metodo-manejador que informa de que el servidor LDAP con el que estaba conectado esta sesion ha dejado de dar servicio.

Una vez que se ha notificado la caida de la sesion, el nucleo de ANNA.ldap genera un ldap::Session::eventResponse para cada una de las peticiones que hay pendientes de contestar.

287 {;}

◆ getCategory()

int anna::ldap::Session::getCategory ( ) const
inline

Devuelve la categoria de esta sesion. Coincidira con la indicada en ldap::Engine::createSession.

Returns
La categoria de esta sesion. Coincidira con la indicada en ldap::Engine::createSession.
104 { return a_category; }

◆ getDangerousFileDescriptor()

int anna::ldap::Session::getDangerousFileDescriptor ( ) const
noexcept

Devuelve el fd asociado a esta sesión de LDAP.

Returns
el fd asociado a esta sesión de LDAP.
Warning
Las operaciones sobre este fd podrían influir negativamente en el sistema.

◆ getDefer()

Option::Defer::_v anna::ldap::Session::getDefer ( ) const
inline

Devuelve el modo de interpretar las referencias establecido en esta sesion.

Returns
El modo de interpretar las referencias establecido en esta sesion.
128 { return a_defer; }

◆ getExternalID()

int anna::ldap::Session::getExternalID ( ) const
inline

Devuelve la clave externa con la que fué creada esta sesión.

109 { return a_externalID; }

◆ getLDAP()

void* anna::ldap::Session::getLDAP ( )
inline

Devuelve el manejador usado para conectar con el servidor LDAP.

Warning
Exclusivamente uso interno.
115 { return a_ldap; }

◆ getNetworkTimeout()

Millisecond anna::ldap::Session::getNetworkTimeout ( ) const
inline

Devuelve el valor establecido en setNetworkTimeout

Returns
Los miligundos establecidos por setNetworkTimeout.
Warning
El valor retornado sólo tendrá valided si hasNetworkTimeout devolvió true.
155  {
156  Millisecond result(1000 * a_networkTimeout.tv_sec);
157  return Millisecond(result + a_networkTimeout.tv_usec / 1000);
158  }

◆ getPassword()

const std::string& anna::ldap::Session::getPassword ( ) const
inline

Devuelve el password de esta sesion. Coincidira con la indicada en ldap::Engine::createSession.

Returns
El password de esta sesion. Coincidira con la indicada en ldap::Engine::createSession.
98 { return a_password; }

◆ getReferral()

Option::Referral::_v anna::ldap::Session::getReferral ( ) const
inline

Devuelve true si la biblioteca LDAP realiza de forma automatica el siguimiento de las referencias retornadas por los servidores LDAP o false en otro caso.

Returns
true si la biblioteca LDAP realiza de forma automatica el siguimiento de las referencias retornadas por los servidores LDAP o false en otro caso.
136 { return a_referral; }

◆ getState()

State::_v anna::ldap::Session::getState ( ) const
inline

Devuelve el estado de esta sesion.

Returns
El estado de esta sesion.
142 { return a_state; }

◆ getTimeout()

const Millisecond& anna::ldap::Session::getTimeout ( const ClassCode::_v  v) const
inline

Devuelve el periodo de espera establecido para las peticiones del tipo v.

Returns
el periodo de espera establecido para las peticiones del tipo v.
148 { return a_timeouts [v]; }

◆ getURL()

const std::string& anna::ldap::Session::getURL ( ) const
inline

Devuelve la direccion del servidor LDAP. Coincidira con la indicada en ldap::Engine::createSession.

Returns
La direccion del servidor LDAP. Coincidira con la indicada en ldap::Engine::createSession.
86 { return a_url; }

◆ getUser()

const std::string& anna::ldap::Session::getUser ( ) const
inline

Devuelve el usuario de esta sesion. Coincidira con la indicada en ldap::Engine::createSession.

Returns
El usuario de esta sesion. Coincidira con la indicada en ldap::Engine::createSession.
92 { return a_user; }

◆ hasNetworkTimeout()

bool anna::ldap::Session::hasNetworkTimeout ( ) const
inline

Devuelve true si se estableció el tiempo de espera de conexión o false en otro caso.

Returns
true si se estableció el tiempo de espera de conexión o false en otro caso.
164 { return a_networkTimeout.tv_sec != -1; }

◆ isBound()

bool anna::ldap::Session::isBound ( ) const
inline

Devuelve true si la sesion esta conectada al servidor LDAP o false en otro caso.

Returns
true si la sesion esta conectada al servidor LDAP o false en otro caso.
178 { return a_state == State::Bound; }
Definition: Session.hpp:48

◆ send() [1/2]

const Response* anna::ldap::Session::send ( const Request request)
noexcept

Envia la peticion recibida como parametro al servidor con el que estamos conectados mediante esta sesion LDAP.

Una vez enviada la peticion se activara automaticamente un temporizador. Si este llegara a caducar se cancelara la busqueda y se invocara al metodo Session::eventResponse indicado que se ha producido un error de temporización. La duracion del temporizador sera la establecida por ldap::TimerManager::setTimeout o el valor defecto.

Parameters
requestPeticion a enviar al servidor LDAP con el que estamos conectados.
Returns
La instancia de la respuesta LDAP asociada la peticion realizada.
Warning
Solo se podra hacer uso de este metodo cuando el metodo isBound devuelva true.

◆ send() [2/2]

const Response* anna::ldap::Session::send ( const Request request)
inlinenoexcept

Envia la peticion recibida como parametro al servidor con el que estamos conectados mediante esta sesion LDAP.

Una vez enviada la peticion se activara automaticamente un temporizador. Si este llegara a caducar se cancelara la busqueda y se invocara al metodo Session::eventResponse indicado que se ha producido un error de temporización. La duracion del temporizador sera la establecida por ldap::TimerManager::setTimeout o el valor defecto.

Parameters
requestPeticion a enviar al servidor LDAP con el que estamos conectados.
Returns
La instancia de la respuesta LDAP asociada la peticion realizada.
Warning
Solo se podra hacer uso de este metodo cuando el metodo isBound devuelva true.
249 { return send(&request); }
const Response * send(const Request *request) noexcept(false)
Here is the call graph for this function:

◆ setNetworkTimeout()

void anna::ldap::Session::setNetworkTimeout ( const Millisecond timeout)
inline

Establece el periodo de tiempo máximo que esperará la conexión a un servidor LDAP antes de considerar que éste no es alcanzable.

Parameters
timeoutMilisegundos que esperará la conexión a un servidor LDAP antes de considerar que no es alcanzable.
See also
http://manpages.courier-mta.org/htmlman3/ldap_get_option.3.html
Warning
Sólo tiene efecto antes de invocar al bind, por lo que habrá que desactivar la auto conexión, para establecer el valor.
201 { a_networkTimeout.tv_sec = timeout / 1000; a_networkTimeout.tv_usec = (timeout % 1000) * 1000; }

◆ setOption() [1/2]

void anna::ldap::Session::setOption ( const Option::Defer::_v  defer)
inline

Establece el modo de interpretar las referencias.

Parameters
deferIndica el modo de interpretar las referencias.
184 { a_defer = defer; }

◆ setOption() [2/2]

void anna::ldap::Session::setOption ( const Option::Referral::_v  referral)
inline

Establece el modo en que la biblioteca LDAP actua a la hora de realizar el siguimiento de las referencias.

Parameters
referralIndica el modo de realizar el seguimiento de las referncias.
190 { a_referral = referral; }

◆ setTimeout()

void anna::ldap::Session::setTimeout ( const ClassCode::_v  v,
const Millisecond millisecond 
)
inline

Establece el tiempo de espera maximo antes de considerar fallida una peticion LDAP.

Parameters
vTipo de peticion LDAP.
millisecondMilisegundos esperados antes de considerar fallida la peticion LDAP.

Los temporizadores correspondientes las peticiones LDAP se activaran automaticamente al invocar a los distintos métodos de esta clase.

219 { a_timeouts [v] = millisecond; }

◆ unbind()

void anna::ldap::Session::unbind ( )
noexcept

Desconecta este cliente LDAP del servidor LDAP. Se notifica la terminación de cada una de las peticiones pendientes invocando al método Session::eventResponse indicando un error y se cancelan en el servidor LDAP.

Warning
Después de invocar a este método habría que volver a invocar a ldap::Session::bind y esperar la conexión antes de volver a usar esta sessión.

Friends And Related Function Documentation

◆ Engine

friend class Engine
friend

◆ Timer

friend class Timer
friend

Member Data Documentation

◆ DefaultTimeout

const Millisecond anna::ldap::Session::DefaultTimeout
static

Periodo de espera por defecto para cada una de las peticiones de esta sesión.


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