#include <std_file_committer.hpp>
Граф наследования:snapshot_file_committer_t:
Вся остальная функциональность наследуется из std_file_committer_t.
Открытые члены | |
snapshot_file_committer_t (const std::string &physic_name) | |
Инициализирующий конструктор. | |
trace_file_number_set_t | outdated_traces () const |
Получить множество trace-файлов, которые вошли в snapshot. | |
Реализация унаследованных методов. | |
virtual void | detect_nonactual_traces (trace_file_number_set_t &traces) |
Закрытые типы | |
typedef std_file_committer_t | base_type_t |
Псевдоним для базового типа. | |
Закрытые данные | |
trace_file_number_set_t | m_outdated_traces |
Множество trace-файлов, которые вошли в snapshot. |
snapshot_file_committer_t | ( | const std::string & | physic_name | ) |
Инициализирующий конструктор.
physic_name | Физическое имя восстанавливаемой БД. |
void detect_nonactual_traces | ( | trace_file_number_set_t & | traces | ) | [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() может быть подано пустое множество.
Переопределяет метод предка std_file_committer_t.
trace_file_number_set_t outdated_traces | ( | ) | const |
Получить множество trace-файлов, которые вошли в snapshot.
Эти файлы уже не актуальны и могут быть, при необходимости, уничтожены.
Возвращает корректное значение только, если отработал метод reduce_traces_set().