MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
管理所有的日志文件 更多...
#include <log_file.h>
Public 成员函数 | |
RC | init (const char *directory, int max_entry_number_per_file) |
初始化 更多... | |
RC | list_files (vector< string > &files, LSN start_lsn) |
列出所有的日志文件,第一个日志文件包含大于等于start_lsn最小的日志 更多... | |
RC | last_file (LogFileWriter &file_writer) |
获取最新的一个日志文件名 更多... | |
RC | next_file (LogFileWriter &file_writer) |
获取一个新的日志文件名 更多... | |
静态 Private 成员函数 | |
static RC | get_lsn_from_filename (const string &filename, LSN &lsn) |
从文件名称中获取LSN 更多... | |
Private 属性 | |
filesystem::path | directory_ |
int | max_entry_number_per_file_ |
日志文件存放的目录 | |
map< LSN, filesystem::path > | log_files_ |
一个文件最大允许存放多少条日志 | |
静态 Private 属性 | |
static constexpr const char * | file_prefix_ = "clog_" |
static constexpr const char * | file_suffix_ = ".log" |
管理所有的日志文件
日志文件都在某个目录下,使用固定的前缀加上日志文件的第一个LSN作为文件名。 每个日志文件没有最大字节数要求,但是以固定条数的日志为一个文件,这样方便查找。
|
staticprivate |
从文件名称中获取LSN
如果日志文件名不符合要求,就返回失败
RC LogFileManager::init | ( | const char * | directory, |
int | max_entry_number_per_file | ||
) |
初始化
directory | 日志文件目录 |
max_entry_number_per_file | 一个文件最多存储多少条日志 |
RC LogFileManager::last_file | ( | LogFileWriter & | file_writer | ) |
获取最新的一个日志文件名
如果当前有文件就获取最后一个日志文件,否则创建一个日志文件,也就是第一个日志文件
RC LogFileManager::list_files | ( | vector< string > & | files, |
LSN | start_lsn | ||
) |
列出所有的日志文件,第一个日志文件包含大于等于start_lsn最小的日志
files | 满足条件的所有日志文件名 |
start_lsn | 想要查找的日志的最小LSN |
RC LogFileManager::next_file | ( | LogFileWriter & | file_writer | ) |
获取一个新的日志文件名
获取下一个日志文件名。通常是上一个日志文件写满了,通过这个接口生成下一个日志文件