Граф наследования:std_header_processor_t:
Открытые члены | |
std_header_processor_t (const config_t &config, page_accessor_t &accessor, bool is_read_only) | |
Инициализирующий конструктор. | |
Реализация унаследованных методов. | |
chain_id_t | allocate_block () |
Выделить новый блок. | |
void | deallocate_block (const chain_id_t &block) |
Сделать блок свободным. | |
chain_id_t | get_next (const chain_id_t &block) |
Получить ссылку на следующий блок из указанного блока. | |
void | change_next (const chain_id_t &block, const chain_id_t &next) |
Установить ссылку на следующий блок для указаного блока. | |
void | ensure_allocated (const chain_id_t &block_id) |
Проверяет, что блок помечен, как занятый. | |
void | operation_finished (bool is_read_only) |
расход памяти. | |
Закрытые типы | |
typedef std::map< oess_1::uint_t, ref_area_header_t > | area_header_map_t |
Тип карты заголовков областей. | |
typedef std::map< oess_1::uint_t, ref_segment_header_t > | segment_header_map_t |
Тип карты заголовков сегментов. | |
typedef std::map< oess_1::uint_t, oess_1::uint_t > | page_use_map_t |
Тип карты для отсчета времен доступа к страницам. | |
Закрытые члены | |
common_header_t & | get_common_header () |
Получить общий заголовок. | |
area_header_t & | get_area_header (const area_ordinal_t &area) |
Получить заголовок указанной области. | |
segment_header_t & | get_segment_header (const area_ordinal_t &area, const segment_ordinal_t &segment) |
Получить заголовок указанного сегмента. | |
void | commit_common_header (common_header_t &header) |
Зафиксировать в хранилище общий заголовок. | |
void | commit_area_header (area_header_t &header) |
Зафиксировать в хранилище заголовок области. | |
void | commit_segment_header (segment_header_t &header) |
Зафиксировать в хранилище заголовок сегмента. | |
void | update_page_usage (oess_1::uint_t page) |
Обновить время использования для страницы. | |
void | reduce_memory_use () |
использовались. | |
Закрытые данные | |
const config_t & | m_config |
Конфигурация хранилища. | |
const page_index_calculator_t | m_calculator |
Размеры хранилища. | |
page_accessor_t & | m_page_accessor |
Интерфейс для доступа к значениям страниц. | |
bool | m_is_read_only |
true, если разрешены только read-only операции. | |
ref_common_header_t | m_common_header |
Загруженное значение общего заголовка. | |
area_header_map_t | m_areas |
Карта загруженных заголовков областей. | |
area_header_t::io_buffer_t | m_area_header_io_buffer |
заголовков областей. | |
segment_header_map_t | m_segments |
Карта загруженных заголовков сегментов. | |
segment_header_t::io_buffer_t | m_segment_header_io_buffer |
заголовков сегментов. | |
oess_1::uint_t | m_timer |
Таймер, который отсчитывает время доступа к страницам. | |
page_use_map_t | m_page_usage |
Карта для отсчета времен доступа к страницам. |
typedef std::map< oess_1::uint_t, ref_area_header_t > area_header_map_t [private] |
Тип карты заголовков областей.
Ключем является номер страницы, на которой располагается заголовок области.
typedef std::map< oess_1::uint_t, oess_1::uint_t > page_use_map_t [private] |
Тип карты для отсчета времен доступа к страницам.
Ключем является номер страницы, а значением -- время последнего доступа к странице.
typedef std::map< oess_1::uint_t, ref_segment_header_t > segment_header_map_t [private] |
Тип карты заголовков сегментов.
Ключем является номер страницы, на которой располагается заголовок области.
std_header_processor_t | ( | const config_t & | config, | |
page_accessor_t & | accessor, | |||
bool | is_read_only | |||
) |
Инициализирующий конструктор.
config | Конфигурация хранилища. |
accessor | Интерфейс доступа к значениям страниц. |
is_read_only | true, если должны использоваться только read-only операции. |
chain_id_t allocate_block | ( | ) | [virtual] |
Выделить новый блок.
Для нового блока ссылка на следующий блок выставляется в invalid_chain_id.
Замещает header_processor_t.
void commit_area_header | ( | area_header_t & | header | ) | [private] |
Зафиксировать в хранилище заголовок области.
Так же сбрасывается признак модифицированности объекта.
void commit_common_header | ( | common_header_t & | header | ) | [private] |
Зафиксировать в хранилище общий заголовок.
Так же сбрасывается признак модифицированности объекта.
void commit_segment_header | ( | segment_header_t & | header | ) | [private] |
Зафиксировать в хранилище заголовок сегмента.
Так же сбрасывается признак модифицированности объекта.
void ensure_allocated | ( | const chain_id_t & | block_id | ) | [virtual] |
Проверяет, что блок помечен, как занятый.
oess_1::logic_ex_t,если | block_id является свободным. |
Замещает header_processor_t.
area_header_t & get_area_header | ( | const area_ordinal_t & | area | ) | [private] |
Получить заголовок указанной области.
Если этот заголовок еще не загружен, то он загружается или создается, если его еще не было в хранилище.
common_header_t & get_common_header | ( | ) | [private] |
Получить общий заголовок.
Если общий заголовок еще не загружен, то он загружается (или создается в хранилище, если хранилище пусто).
segment_header_t & get_segment_header | ( | const area_ordinal_t & | area, | |
const segment_ordinal_t & | segment | |||
) | [private] |
Получить заголовок указанного сегмента.
Если этот заголовок еще не загружен, то он загружается или создается, если его еще не было в хранилище.
void reduce_memory_use | ( | ) | [private] |
использовались.
Если количество всех загруженных заголовков превышает 1/4 от размера кэша, то из памяти выгружаются все лишние давно не использовавшиеся страницы.
ref_common_header_t m_common_header [private] |
Загруженное значение общего заголовка.
Содержит 0, если общий заголовок не был загружен.