|
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 | ) |
获取一个新的日志文件名
获取下一个日志文件名。通常是上一个日志文件写满了,通过这个接口生成下一个日志文件