Класс committer_t

#include <types.hpp>

Граф наследования:committer_t:

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

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

Тип объекта, который получает восстановленные из trace-stream значения страниц основного файла для сохранения их в новый основной файл.

Начиная с:
v.1.4.0


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

virtual void detect_nonactual_traces (trace_file_number_set_t &traces)=0
virtual void initialize (oess_1::uint_t total_page_count, oess_1::uint_t page_size, oess_1::uint_t block_size)=0
virtual void finalize ()=0
virtual void store_block (oess_1::uint_t ordinal, oess_1::uint_t block_index, const std::string &block_value)=0
virtual bool is_insufficient_trace_info_allowed () const =0


Методы

virtual void detect_nonactual_traces ( trace_file_number_set_t traces  )  [pure virtual]

Вызывается объектом trace_stream_t перед методом initialize() для того, чтобы определить точное множество trace-файлов для обратного воспроизведения. Если для БД поддерживались snapshot-ы, то часть trace-файлов можно будет проигнорировать т.к. их содержимое уже есть в snapshot-е. Но trace_stream_t не знает про существование snapshot-ов и о том, нужны ли они данному committer-у. Поэтому выбор конкретного подмножества trace-файлов для воспроизведения перекладывается на committer. Для этого trace_stream_t обращается к методу detect_nonactual_traces() и передает все множество найденых trace-файлов. Committer должен вычеркнуть из этого множества все trace-файлы, которые являются актуальными. В результате должно быть получено множество не актуальных trace-файлов, который безопасно могут быть проигнорированны. Если же все trace-файлы являются актуальными, то в итоге должно получиться пустое множество.

trace_stream_t передает в traces не все множество trace-файлов, а только те trace-файлы, актуальность который trace_stream_t не может проверить самостоятельно. Так, trace_stream_t точно знает номера trace-файлов, в которых содержится самая последняя транзакция (таких файлов может быть несколько). Поэтому на вход detect_nonactual_traces() может быть подано пустое множество.

Аргументы:
traces  Текущее множество номеров trace-файлов, актуальность которых trace_stream_t не может проверить самостоятельно. На выходе должно содержать номера trace-файлов, которые могут быть проигнорированны.

Замещается в std_file_committer_t, unclear_file_committer_t и snapshot_file_committer_t.

virtual void finalize (  )  [pure virtual]

Вызывается объектом trace_stream_t после завершения успешного восстановления БД.

Замещается в std_file_committer_t и unclear_file_committer_t.

virtual void initialize ( oess_1::uint_t  total_page_count,
oess_1::uint_t  page_size,
oess_1::uint_t  block_size 
) [pure virtual]

Вызывается объектом trace_stream_t перед началом восстановления БД для того, чтобы сообщить коммитеру о самых важных параметрах восстанавливаемого файла.

Аргументы:
total_page_count  Общее количество страниц в файле.
page_size  Размер одной страницы в файле.
block_size  Размер одного блока на странице. Гарантируется, что page_size будет кратен block_size.

Замещается в std_file_committer_t и unclear_file_committer_t.

virtual bool is_insufficient_trace_info_allowed (  )  const [pure virtual]

Должен возвращать true, если ситуация, когда в актуальном можестве trace-файлов (возвращаемом методом reduce_traces_set()) допускается отсутствие полной информации о содержимом БД. Например, если для восстановления БД кроме trace-файлов используются еще и snapshot-ы, то части trace-файлов (которые были сохранены в snapshot-е) может просто не быть. В этом случае процедура обратного восспроизведения определит, что восстановочной информации недостаточно (т.к. она не знает про существование snapshot-ов). trace_stream_t вызовет данный метод и, если метод, возвратит false, то trace_stream_t породит исключение о недостаточности восстановочной информации. Если же данный метод возвратит true, то процедура обратного воспроизведения будет считаться успешно завершенной.

Замещается в std_file_committer_t и unclear_file_committer_t.

virtual void store_block ( oess_1::uint_t  ordinal,
oess_1::uint_t  block_index,
const std::string &  block_value 
) [pure virtual]

Вызвается объектом trace_stream_t при необходимости сохранения значения фрагмента страницы в восстанавливаемом основном файле.

Размер блока задается в методе initialize().

Заметки:
Не гарантируется, что при воспроизведении trace-файла страницы будут отдаваться committer-у в порядке возрастания их номеров. Например, вместо 0-й страницы committer-у может быть передана страница 12034. Committer сам должен определить, что такой страницы еще нет и что нужно заполнить предшествующие 12033 страницы нулевыми значениями. Так же не гарантируется, что фрагменты будут восстанавливаться в порядке возрастания их индексов на странице.
Аргументы:
ordinal  Порядковый номер страницы.
block_index  Порядковый номер (индекс) блока на странице.
block_value  Значение блока.

Замещается в std_file_committer_t и unclear_file_committer_t.


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