通过前文记录的结构,可以推测出Log文件的读取流程,即首先根据头部的长度字段确定需要读取多少字节,然后根据头部类型字段确定该条记录是否已经完整读取,如果没有完整读取,继续按照流程进行,直到读取到记录的最后一部分,其头部类型为 kLastType
WALLog 文件的读取代码主要位于 db/log_reader.h
和 db/log_reader.cc
两个文件。头文件 中包含一个公共方法 ReadRecord
:
bool ReadRecord(Slice* record, std::string* scratch)
代码详细见 log_reader.h / log_reader.cc。
网友评论