#include <StorageArea.hpp>
|
virtual | ~StorageArea () |
|
int | getErrorCode () const |
|
const std::string & | getName () const |
|
Object * | instance (dbms::Connection &connection, Loader &loader) noexcept(false) |
|
Object * | instance (dbms::Connection *connection, Loader &loader) noexcept(false) |
|
Object * | instance (dbms::Connection &connection, CrossedLoader &crossedLoader, Loader &loader) noexcept(false) |
|
Object * | instance (dbms::Connection *connection, CrossedLoader &crossedLoader, Loader &loader) noexcept(false) |
|
Object * | instance (Loader &loader) noexcept(false) |
|
Object * | create (dbms::Connection &connection, Creator &creator) noexcept(false) |
|
Object * | create (dbms::Connection *connection, Creator &creator) noexcept(false) |
|
Object * | create (Creator &creator) noexcept(false) |
|
Object * | find (Loader &loader) noexcept(false) |
|
Object * | duplicate (const Object *object) noexcept(false) |
|
bool | isLoaded (const Loader &loader) noexcept(false) |
|
void | apply (dbms::Connection &connection, Recorder &recorder) noexcept(false) |
|
void | apply (dbms::Connection &connection, Eraser &eraser) noexcept(false) |
|
void | release (Object **object) noexcept(false) |
|
void | erase (Object **object) noexcept(false) |
|
void | dirty (Object *object) noexcept(false) |
|
void | setSizeof (const Size _sizeof) |
|
Size | getMaxSizeOf () const |
|
Size | getSizeOf () const |
|
iterator | begin () |
|
const_iterator | begin () const |
|
iterator | end () |
|
const_iterator | end () const |
|
std::string | asString () const |
|
xml::Node * | asXML (xml::Node *parent) const |
|
| 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 |
|
Area de almacenamiento de los objetos obtenidos a partir de los datos guardados en un medio fisico, que normalmente seria una base de datos.
La creacion de cualquier área de almacenamiento debe hacerse mediante el método anna::dbos::Repository::createStorageArea.
- Warning
- Exclusivamente para uso interno de anna.dbos
◆ Blocks
Estructura para mantener los bloques de objetos
◆ const_iterator
Definicion para recorrer los objetos del área de almacenamiento
◆ iterator
Definicion para recorrer los objetos del área de almacenamiento
◆ ~StorageArea()
virtual anna::dbos::StorageArea::~StorageArea |
( |
| ) |
|
|
virtual |
◆ apply() [1/2]
Transfiere la informacion del objeto recibido como parámetro al medio fisico usando el Recorder recibido como parámetro.
- Parameters
-
connection | Conexion usada si fuera necesario acceder al medio fisico. |
recorder | Grabador usado para transferir los datos al medio fisico. |
◆ apply() [2/2]
Elimina la informacion del objeto recibido como parámetro del medio fisico usando el Eraser recibido como parámetro.
- Parameters
-
connection | Conexion usada si fuera necesario acceder al medio fisico. |
eraser | Objecto usado para eliminar los datos al medio fisico. |
- Warning
- Si la cuenta de utilizacion del objeto es 1 se liberaría en otro caso se devolvería una excepción.
◆ asMemorySize()
static std::string anna::dbos::StorageArea::asMemorySize |
( |
const Size |
size | ) |
|
|
staticprotected |
Devuelve un literal con el entero recibido tratado como una cantidad en bytes.
- Returns
- un literal con el entero recibido tratado como un cantidad en bytes
◆ asString()
std::string anna::dbos::StorageArea::asString |
( |
| ) |
const |
Devuelve una cadena con la informacion referente a este área de almacenamiento.
- Returns
- Una cadena con la informacion referente a este área de almacenamiento.
◆ asXML()
Devuelve un documento XML con la informacion referente a esta instancia.
- Parameters
-
parent | Nodo XML del que dependende la informacion. |
- Returns
- un documento XML con la informacion referente a esta instancia.
◆ begin() [1/2]
iterator anna::dbos::StorageArea::begin |
( |
| ) |
|
|
inline |
Devuelve un iterator al primero de los objetos contenido en el área del almacenamiento.
- Returns
- Un iterator al primero de los objetos contenido en el área del almacenamiento.
459 {
return a_directory.begin(); }
◆ begin() [2/2]
Devuelve un iterator al primero de los objetos contenido en el área del almacenamiento.
- Returns
- Un iterator al primero de los objetos contenido en el área del almacenamiento.
465 {
return a_directory.begin(); }
◆ clear()
void anna::dbos::StorageArea::clear |
( |
| ) |
|
|
protectednoexcept |
◆ create() [1/3]
Crea un objeto en el área de almacenamiento un y lo prepara para ser transferido al medio fisico si fuera necesario.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar. Por ejemplo, en caso de tener que obtener el objeto a partir de los datos contenidos en una tabla de una base de datos deberia conocer la clave primaria del objeto a cargar, o alguna otra combinacion de columnas que lo identifiquen univocamente.
- Parameters
-
connection | Conexion usada si fuera necesario acceder al medio fisico. |
creator | Creador encargado de generar el objeto en el área de almacenamiento. |
- Returns
- La nueva instancia que cumple el patron establecido por el creador.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
- No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly.
296 return create(&connection, creator);
Object * create(dbms::Connection &connection, Creator &creator) noexcept(false)
Definition: StorageArea.hpp:295
◆ create() [2/3]
Crea un objeto en el área de almacenamiento un y lo prepara para ser transferido al medio fisico si fuera necesario.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar. Por ejemplo, en caso de tener que obtener el objeto a partir de los datos contenidos en una tabla de una base de datos deberia conocer la clave primaria del objeto a cargar, o alguna otra combinacion de columnas que lo identifiquen univocamente.
- Parameters
-
connection | Conexion usada si fuera necesario acceder al medio fisico. |
creator | Creador encargado de generar el objeto en el área de almacenamiento. |
- Returns
- La nueva instancia que cumple el patron establecido por el creador.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
- No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly.
◆ create() [3/3]
Crea un objeto en el área de almacenamiento y lo prepara para ser transferido al medio fisico si fuera necesario.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar.
- Parameters
-
creator | Creador encargado de generar el objeto en el área de almacenamiento. |
- Returns
- La nueva instancia que cumple el patron establecido por el creador.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
- No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly.
334 {
return create(NULL, creator); }
Object * create(dbms::Connection &connection, Creator &creator) noexcept(false)
Definition: StorageArea.hpp:295
◆ data() [1/2]
Devuelve el puntero sobre el que esta posicionado el iterador recibido como parámetro.
- Returns
- El puntero sobre el que esta posicionado el iterador recibido como parámetro.
483 {
return ii->second->object; }
◆ data() [2/2]
Devuelve el puntero sobre el que esta posicionado el iterador recibido como parámetro.
- Returns
- El puntero sobre el que esta posicionado el iterador recibido como parámetro.
489 {
return ii->second->object; }
◆ dirty()
void anna::dbos::StorageArea::dirty |
( |
Object * |
object | ) |
|
|
noexcept |
Marca el objeto recibido como pendiente de recarga de datos.
- Parameters
-
object | Instancia que vamos a marcar como pendiente de recarga. |
- Warning
- Si el objeto recibido como parámetro no fue reservado mediate instance no tiene ningun efecto.
- La instancia a marcar solo deberia tener una unica instancia en uso.
◆ duplicate()
Object* anna::dbos::StorageArea::duplicate |
( |
const Object * |
object | ) |
|
|
noexcept |
Devuelve de una copia del objeto recibido como parámetro e incrementa la cuenta de utilizacion asociada a la instancia.
- Parameters
-
object | Instancia obtenida mediate el método instance. |
- Returns
- Una copia del objeto recibido como parámetro. Si el parámetro recibido es NULL devolveria NULL.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
◆ end() [1/2]
iterator anna::dbos::StorageArea::end |
( |
| ) |
|
|
inline |
Devuelve un iterator al fin de los objetos contenidos en el área del almacenamiento.
- Returns
- Un iterator al fin de los objetos contenidos en el área del almacenamiento.
471 {
return a_directory.end(); }
◆ end() [2/2]
Devuelve un iterator al fin de los objetos contenidos en el área del almacenamiento.
- Returns
- Un iterator al fin de los objetos contenidos en el área del almacenamiento.
477 {
return a_directory.end(); }
◆ erase()
void anna::dbos::StorageArea::erase |
( |
Object ** |
object | ) |
|
|
noexcept |
Elimina toda la informacion referente al objeto recibido como parámetro, siempre y cuando solo tenga un unica referencia activa. Descarga el objeto de la memoria de almacenamiento,
- Parameters
-
object | Instancia que vamos a descargar de la memoria de almacenamiento. |
- Warning
- Si el objeto recibido como parámetro no fue reservado mediate instance no tiene ningun efecto.
- La instancia a liberar solo puede tener 1 en su cuenta de utilizacion.
◆ find()
Devuelve la informacion de un objeto cargado desde el medio fisico.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe buscar. Por ejemplo, en caso de tener que obtener el objeto a partir de los datos contenidos en una tabla de una base de datos deberia conocer la clave primaria del objeto a cargar, o alguna otra combinacion de columnas que lo identifiquen univocamente.
- Parameters
-
loader | Cargador de clase encargado de localizar la informacion referente al objeto buscado. |
- Returns
- Una instancia que cumple el patron establecido por el cargador. Puede ser NULL si el objeto no fue cargado en el área de almacenamiento.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
◆ getErrorCode()
int anna::dbos::StorageArea::getErrorCode |
( |
| ) |
const |
|
inline |
Devuelve el código de error asociado a la excepción cuando no se encuentra un registro buscado.
- Returns
- el código de error asociado a la excepción cuando no se encuentra un registro buscado.
148 {
return a_errorCode; }
◆ getMaxSizeOf()
Size anna::dbos::StorageArea::getMaxSizeOf |
( |
| ) |
const |
|
inline |
Devuelve el numero maximo de bytes teorico que puede llegar a reservar este área de almacenamiento.
- Returns
- el numero maximo de bytes teorico que puede llegar a reservar este área de almacenamiento.
447 {
return a_maxSize * a_sizeof; }
◆ getName()
const std::string& anna::dbos::StorageArea::getName |
( |
| ) |
const |
|
inline |
◆ getSizeOf()
Size anna::dbos::StorageArea::getSizeOf |
( |
| ) |
const |
|
inline |
Devuelve el numero de bytes teorico que puede llegar a reservar este área de almacenamiento.
- Returns
- el numero de bytes teorico que puede llegar a reservar este área de almacenamiento.
453 {
return a_directory.size() * a_sizeof; }
◆ instance() [1/5]
Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a una clase C++.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar. Por ejemplo, en caso de tener que obtener el objeto a partir de los datos contenidos en una tabla de una base de datos deberia conocer la clave primaria del objeto a cargar, o alguna otra combinacion de columnas que lo identifiquen univocamente.
- Parameters
-
connection | Conexion usada si fuera necesario extraer los datos del medio fisico. |
loader | Cargador de clase encargado de localizar y obtener la informacion referente al objeto que deseamos cargar en memoria. |
- Returns
- Una instancia que cumple el patron establecido por el cargador. Puede ser NULL en caso de que al inicializar esta clase errorCode se halla indicado un NoExceptionWhenNotFound en otro caso si no encuentra el objeto que cumpla el patron devolveria una excepcion de ejecucion.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
177 return instance(&connection, loader);
Object * instance(dbms::Connection &connection, Loader &loader) noexcept(false)
Definition: StorageArea.hpp:176
◆ instance() [2/5]
Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a una clase C++.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar. Por ejemplo, en caso de tener que obtener el objeto a partir de los datos contenidos en una tabla de una base de datos deberia conocer la clave primaria del objeto a cargar, o alguna otra combinacion de columnas que lo identifiquen univocamente.
- Parameters
-
connection | Conexion usada si fuera necesario extraer los datos del medio fisico. |
loader | Cargador de clase encargado de localizar y obtener la informacion referente al objeto que deseamos cargar en memoria. |
- Returns
- Una instancia que cumple el patron establecido por el cargador. Puede ser NULL en caso de que al inicializar esta clase errorCode se halla indicado un NoExceptionWhenNotFound en otro caso si no encuentra el objeto que cumpla el patron devolveria una excepcion de ejecucion.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
◆ instance() [3/5]
Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a una clase C++.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar. Por ejemplo, en caso de tener que obtener el objeto a partir de los datos contenidos en una tabla de una base de datos deberia conocer la clave primaria del objeto a cargar, o alguna otra combinacion de columnas que lo identifiquen univocamente.
- Parameters
-
connection | Conexion usada si fuera necesario extraer los datos del medio fisico. |
crossedLoader | Cargador encargado de encontrar la clave principal a aplicar con el #Loader recibido como parámetro en base a una clave alternativa contenida en el mismo. |
loader | Cargador de clase encargado de localizar y obtener la informacion referente al objeto que deseamos cargar en memoria. |
- Returns
- Una instancia que cumple el patron establecido por el cargador. Puede ser NULL en caso de que al inicializar esta clase errorCode se halla indicado un NoExceptionWhenNotFound en otro caso si no encuentra el objeto que cumpla el patron devolveria una excepcion de ejecucion.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
226 return instance(&connection, crossedLoader, loader);
Object * instance(dbms::Connection &connection, Loader &loader) noexcept(false)
Definition: StorageArea.hpp:176
◆ instance() [4/5]
Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a una clase C++.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar. Por ejemplo, en caso de tener que obtener el objeto a partir de los datos contenidos en una tabla de una base de datos deberia conocer la clave primaria del objeto a cargar, o alguna otra combinacion de columnas que lo identifiquen univocamente.
- Parameters
-
connection | Conexion usada si fuera necesario extraer los datos del medio fisico. |
crossedLoader | Cargador encargado de encontrar la clave principal a aplicar con el #Loader recibido como parámetro en base a una clave alternativa contenida en el mismo. |
loader | Cargador de clase encargado de localizar y obtener la informacion referente al objeto que deseamos cargar en memoria. |
- Returns
- Una instancia que cumple el patron establecido por el cargador. Puede ser NULL en caso de que al inicializar esta clase errorCode se halla indicado un NoExceptionWhenNotFound en otro caso si no encuentra el objeto que cumpla el patron devolveria una excepcion de ejecucion.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
◆ instance() [5/5]
Object* anna::dbos::StorageArea::instance |
( |
Loader & |
loader | ) |
|
|
inlinenoexcept |
Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a una clase C++.
Este cargador deberia tener todos los datos necesarios para localizar la informacion del objeto que debe cargar.
- Parameters
-
loader | Cargador de clase encargado de localizar y obtener la informacion referente al objeto que deseamos cargar en memoria. |
- Returns
- Una instancia que cumple el patron establecido por el cargador. Puede ser NULL en caso de que al inicializar esta clase errorCode se halla indicado un NoExceptionWhenNotFound en otro caso si no encuentra el objeto que cumpla el patron devolveria una excepcion de ejecucion.
- Warning
- Cada llamada a este método deberia tener su correspondiente liberacion invocando a release cuando dejemos de usar la instancia.
-
Para usar este método se requiere haber re-escrito el método virtual Loader::load para que no intente obtener los datos desde la base de datos.
Object * instance(dbms::Connection &connection, Loader &loader) noexcept(false)
Definition: StorageArea.hpp:176
◆ isLoaded()
bool anna::dbos::StorageArea::isLoaded |
( |
const Loader & |
loader | ) |
|
|
noexcept |
Permite conocer si un determinado objeto esta alojado en el área de almacenamiento. No cambia la cuenta de utilizacion de los objetos ni provoca cambios en las estadisticas de aciertos.
- Parameters
-
loader | Cargador de clase encargado de localizar la informacion referente al objeto buscado. |
- Returns
- true Si el objeto identificado por el Loader esta en el área de almacenamiento o false en otro caso.
◆ release()
void anna::dbos::StorageArea::release |
( |
Object ** |
object | ) |
|
|
noexcept |
Habilita la reutilizacion del espacio de memoria ocupado por un objeto instanciado mediate instance.
Este método no saca al objeto de la memoria de almacenamiento, sino que marca su espacio de memoria como subceptible de ser reutilizado. De esta forma, si el número de objetos cargados en memoria se acerca al tamaño maximo indicado en la inicializacin, cuando halla que cargar un nuevo registro se reusaria el espacio libre en vez de seguir aumentando el tamaño de la memoria de almacenamiento.
- Parameters
-
object | Instancia del objeto que vamos a liberar. |
- Warning
- Si el objeto recibido como parámetro no fue reservado mediate instance no tiene ningun efecto.
◆ setSizeof()
void anna::dbos::StorageArea::setSizeof |
( |
const Size |
_sizeof | ) |
|
|
inline |
Establece el tamanho de las instancias de los objetos contenidos en este área de almacenamiento.
- Parameters
-
_sizeof | Numero de bytes ocupado por cada una de las instancias. |
441 { a_sizeof = _sizeof +
sizeof(
Instance); }
friend struct Instance
Definition: StorageArea.hpp:550
◆ Block
◆ Holes
◆ Instance
◆ Repository
◆ NoExceptionWhenNotFound
const int anna::dbos::StorageArea::NoExceptionWhenNotFound = -1 |
|
static |
The documentation for this class was generated from the following file: