ANNA Suite  2020b
Multipurpose development suite for Telco applications
Public Member Functions | Protected Member Functions | Friends | List of all members
anna::dbos::CrossedLoader Class Reference

#include <CrossedLoader.hpp>

Inheritance diagram for anna::dbos::CrossedLoader:
Inheritance graph
[legend]
Collaboration diagram for anna::dbos::CrossedLoader:
Collaboration graph
[legend]

Public Member Functions

virtual const char * getClassName () const
 
- Public Member Functions inherited from anna::dbos::Accesor
virtual ~Accesor ()
 
Id getId () const
 
dbms::StatementgetStatement () noexcept(false)
 
bool hasDataBase () const
 
dbms::DatabasegetDatabase ()
 
dbms::ConnectiongetConnection () noexcept(false)
 
virtual std::string asString () const =0
 
- 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
 

Protected Member Functions

 CrossedLoader (dbms::Database &database, const Id id=0)
 
 CrossedLoader (dbms::Database &database, const Id id, const Exception::Mode::_v emode)
 
virtual bool seek () const
 
virtual void download (Loader &loader)
 
- Protected Member Functions inherited from anna::dbos::Accesor
 Accesor (dbms::Database &database, const Id id)
 
 Accesor (dbms::Database &database, const Id id, const Exception::Mode::_v emode)
 
 Accesor (const Id id)
 
virtual dbms::Statementinitialize (dbms::Database &database) noexcept(false)=0
 
- Protected Member Functions inherited from anna::Safe
 Safe ()
 

Friends

class StorageArea
 

Additional Inherited Members

- Public Types inherited from anna::dbos::Accesor
typedef short Id
 

Detailed Description

Interfaz que deben cumplir los cargadores cruzados. Un cargador cruzado facilita que una misma clase pueda ser cargada usando varios criterios de búsqueda.

El criterio de búsqueda más usado y que debería ser más óptimo será desarrollado mediante la definición del anna::dbos::Loader específico. El resto de criterios de búsqueda, los cargadores cruzados, deberían ser capaces obtener los datos usados como clave en el criterio principal, para a partir de ahí poder aplicar el criterio de búsqueda principal.

Cada cargador cruzado podría tener una lista de pares (clave_alternativa, clave_principal) que permitirá acelerar las búsquedas de la clave principal, en base a la clave alternativa usada en este cargador.

Para obtener los datos de la clave principal en base a los datos de la clave alternativa habrá que acceder al medio físico.

Para optimizar el acceso a los pares (Clave alternativa, Clave Principal) se podría usar una instancia del tipo anna::LRUMap.

Constructor & Destructor Documentation

◆ CrossedLoader() [1/2]

anna::dbos::CrossedLoader::CrossedLoader ( dbms::Database database,
const Id  id = 0 
)
inlineprotected

Constructor.

Parameters
databaseBase de datos asociada a este cargador y que deberia servir para obtener los datos de un objeto. Debe tener la misma disponibilidad que este cargador.
idIdentificador de este accesor.
59 : Accesor(database, id) {;}
Accesor(dbms::Database &database, const Id id)
Definition: Accesor.hpp:108

◆ CrossedLoader() [2/2]

anna::dbos::CrossedLoader::CrossedLoader ( dbms::Database database,
const Id  id,
const Exception::Mode::_v  emode 
)
inlineprotected

Constructor.

Parameters
databaseBase de datos asociada a este cargador y que deberia servir para obtener los datos de un objeto. Debe tener la misma disponibilidad que este cargador.
idIdentificador de este accesor.
emodeModo de actuar en caso de no encontrar el dato buscado.
68 : Accesor(database, id, emode) {;}
Accesor(dbms::Database &database, const Id id)
Definition: Accesor.hpp:108

Member Function Documentation

◆ download()

virtual void anna::dbos::CrossedLoader::download ( Loader loader)
inlineprotectedvirtual

Este método debe ser reescrito para que se pueda actualizar la lista de pares (clave_alternativa, clave_principal) que permitirá acelear las posteriores búsquedas.

Parameters
loaderInstancia del cargador principal que habrá compuesto la clave principal con los suministrados por esta instancia.
86 {;}

◆ getClassName()

virtual const char* anna::dbos::CrossedLoader::getClassName ( ) const
inlinevirtual

Metodo de debemos re-escribir para devolver el nombre completo del selector de recursos. Para evitar ambigüedades este nombre deberia incluir la lista completa de namespaces a la que pertenece la clase.

Returns
Una cadena con el nombre de este selector.

Implements anna::dbos::Accesor.

50 { return "anna::dbos::CrossedLoader"; }

◆ seek()

virtual bool anna::dbos::CrossedLoader::seek ( ) const
inlineprotectedvirtual

Este método debe ser reescrito para que permita localizar la información del objeto, que posiblemente esté ubicado en la lista de objetos de este cargador cruzado.

Returns
true si se ha localizado la información la clave primaria del objeto en su lista de pares o false en otro caso.
77 { return false; }

Friends And Related Function Documentation

◆ StorageArea

friend class StorageArea
friend

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