#include <tpl_hash_cache.H>
Clases | |
class | Cache_Entry |
class | Iterator |
Métodos públicos | |
Hash_Cache (size_t(*hash_fct)(const Key &), const size_t &__hash_size, const size_t &__cache_size) throw (std::exception, std::bad_alloc) | |
Cache_Entry * | insert (const Key &key, const Data &data) |
Cache_Entry * | search (const Key &key) |
Cache_Entry * | search_next (Cache_Entry *cache_entry) |
void | lock_entry (Cache_Entry *cache_entry) throw (std::exception, std::runtime_error, std::domain_error) |
void | unlock_entry (Cache_Entry *cache_entry) throw (std::exception, std::runtime_error) |
void | remove (Cache_Entry *cache_entry) throw (std::exception, std::runtime_error, std::domain_error) |
void | expand (const size_t &plus_size) throw (std::exception, std::range_error, std::bad_alloc) |
const size_t & | capacity () const |
Retorna el tamaño de cache. | |
const size_t & | size () const |
Retorna en número de datos que están contenidos en el cache. | |
const size_t & | get_num_locked () const |
const size_t & | get_num_busy_slots () const |
const size_t & | get_hash_capacity () const |
Retorna el tamaño de la tabla hash. | |
Cache de datos mapeados a una clave.
Hash_Cache<Key,Data> implanta un cache instrumentado mediante una tabla hash que asocia claves de un conjunto dominio Key a datos de un conjunto rango Data.
Los métodos principales de Hash_Cache operan según un tipo denominado Cache_Entry, el cual es la unidad que contiene el par (clave,dato).
Key | tipo de clave de indización. |
Data | tipo de dato asociado a la clave. |
Cmp | clase de comparación entre las claves. |
|
inline |
Instancia un cache.
Este constructor crea un nuevo cache de capacidad __cache_size e instrumentado mediante una tabla hash de tamaño __hash_size.
[in] | hash_fct | puntero a la función hash. |
[in] | __hash_size | tamaño de la tabla hash interna |
[in] | __cache_size | tamaño del cache. |
bad_alloc | si no hay suficiente memoria. |
Hace referencia a Aleph::Dlink::insert().
|
inline |
Aumenta el tamaño de cache en plus_size entradas. Dispara bad_alloc si no hay suficiente memoria. El nuevo tamaño de la tabla es calculado a ser el mismo radio especificado durante la construcción.
Hace referencia a Aleph::Dlink::insert().
|
inline |
Retorna la cantidad de entradas de la tabla hash que tienen elementos. Su relación con el tamaño de la tabla proporciona una idea de la eficiencia de la función hash.
|
inline |
Retorna la cantidad de entradas del cache que están trancadas. La diferencia con el tamaño proporciona su capacidad en entradas que pueden insertarse.
|
inline |
Inserta un nuevo par (key,data) en el cache.
insert(key,data) inserta en el cache el par (key,data). Si el cache está lleno, entonces el elementos más antiguamente accedido es eliminado y substituido por el par de inserción.
Después de la inserción, el par (key,data) deviene el elemento más recientemente accedido.
[in] | key | clave de indización. |
[in] | data | dato asociado a la clave. |
underflow_error | si el cache está lleno y todas sus entradas trancadas. |
Hace referencia a Aleph::Hash_Cache< Key, Data, Cmp >::Cache_Entry::get_data() y Aleph::Dlink::insert().
|
inline |
Tranca la entrada cache_entry, la cual debe pertenecer al cache y no debe estar trancada. Dispara excepción runtime_error si la entrada ya está trancada o domain_error si no está en el cache.
|
inline |
Elimina la entrada cache_entry del cache. Dispara excepción runtime_error si la entrada está trancada o domain_error si no está contenida en el cache.
|
inline |
Busca una clave en el cache.
search(key) busca en el cache una entrada con valor key.
[in] | key | clave a buscar. |
|
inline |
Busca la próxima entrada con el mismo valor de clave de cache_entry.
Esta función se provee para buscar datos distintos que estén insertados en el cache bajo el mismo valor de clave.
[in] | cache_entry | una entrada resultante de una búsqueda previa u otra llamada a esta primitiva. |
|
inline |
Destranca la entrada cache_entry. Dispara excepción runtime_error si la entrada no está trancada.