Класс replay_completion_map_t

Полный список членов класса

Подробное описание

Битовая карта для определения уже восстановленных фрагментов основного файла.

Внимание:
Данная реализация жестко завязана на то, что в одной странице никогда не будет более 8 блоков, изменения в которых восстанавливаются независимо.
Необходимо сделать:
В принципе, можно разрешить, чтобы количество блоков на странице достигало 32. Этого можно достичь с помощью шаблонов, которые будут определять тип значения для m_masks.
Заметки:
Для повышения быстродействия корректность параметров, которые передаются в методы is_* не проверяются.


Открытые члены

 replay_completion_map_t (oess_1::uint_t page_count, oess_1::uint_t page_size, oess_1::uint_t block_size)
 Инициализирующий конструктор.
bool is_need_continue () const
 Нужно ли продолжать восстановление.
bool is_page_need_completion (oess_1::uint_t page_ordinal) const
 Нужно ли продолжать восстановление указаной страницы.
bool is_page_fragment_need_value (oess_1::uint_t page_ordinal, oess_1::uint_t block_index) const
 указанной странице.
void page_fragment_defined (oess_1::uint_t page_ordinal, oess_1::uint_t block_index)
 фрагмента на указанной странице восстановлено.
void dump (std::ostream &to)
 Отобразить текущее состояние в указанный поток.

Закрытые данные

oess_1::uint_t m_all_block_count
 Общее количество блоков в основном файле.
oess_1::uint_t m_completed_blocks
 Количество установленных в 1 битов.
oess_1::uint_t m_page_block_count
 Количество блоков на одной странице.
oess_1::uchar_t m_completed_page_mask
 Маска, которая соответствует полностью восстановленной странице.
std::vector< oess_1::uchar_tm_masks
 Хранилище битовых масок для всех страниц.


Конструктор(ы)

replay_completion_map_t ( oess_1::uint_t  page_count,
oess_1::uint_t  page_size,
oess_1::uint_t  block_size 
) [inline]

Инициализирующий конструктор.

Исключения:
oess_1::physic_ex_t,если page_size / block_size > 8.
Аргументы:
page_count  Количество страниц основного файла.
page_size  Размер одной страницы в байтах.
block_size  Размер одного блока в байтах.


Методы

bool is_need_continue (  )  const [inline]

Нужно ли продолжать восстановление.

Возвращает:
false, если все страницы хранилища восстановлены.

bool is_page_fragment_need_value ( oess_1::uint_t  page_ordinal,
oess_1::uint_t  block_index 
) const [inline]

указанной странице.

Возвращает:
false, если значение фрагмента уже восстановлено.
Аргументы:
page_ordinal  Порядковый номер страницы в файле.
block_index  Индекс блока на странице.

bool is_page_need_completion ( oess_1::uint_t  page_ordinal  )  const [inline]

Нужно ли продолжать восстановление указаной страницы.

Возвращает:
false, если значение страницы уже полностью восстановлено.
Аргументы:
page_ordinal  Порядковый номер страницы в файле.

void page_fragment_defined ( oess_1::uint_t  page_ordinal,
oess_1::uint_t  block_index 
) [inline]

фрагмента на указанной странице восстановлено.

Увеличиваем количество уже восстановленных блоков.

Аргументы:
page_ordinal  Порядковый номер страницы в файле.
block_index  Индекс блока на странице.


Данные класса

oess_1::uchar_t m_completed_page_mask [private]

Маска, которая соответствует полностью восстановленной странице.

Значение маски определяется количеством блоков на странице.


Объявления и описания членов класса находятся в файле:
Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:39 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz