LogEvent类说明:(LogEvent类是全部MDS Event类的父类)函数
class LogEvent {ui
EventType _type; 记录LogEvent所属的事件类型code
uint64_t _start_off; 记录LogEvent的起始位置对象
utime_t stamp; 记录LogEvent的事件戳事件
LogSegment *_segment; 记录一个LogEvent中包含的全部LogSegment列表it
...io
};event
LogEvent类的方法:class
LogEvent::encode_with_header() 带着头信息序列化LogEvent类对象,序列化内容以下:date
EVENT_NEW_ENCODING
1
_type
bufferlist
LogEvent::decode(bl) 解析序列化的数据流到LogEvent类对象。参照encode_with_header()方法
|__从bufferlist中先解析出type
|__若type==EVENT_NEW_ENCODING 说明encode的时候使用的是encode_with_header()函数
|__按照encode_with_header()的方式解析
|__decode_event()
|__若type!=EVENT_NEW_ENCODING
|__decode_event()
LogEvent::decode_event(bl, p, type)
|__根据type的值,建立不一样的类对象ESubtreeMap/EExport/EImportStart/EImportFinish/EFragment/EResetJournal/ESession/EUpdate/ESlaveUpdate/ECommitted/ETableClient/ETableServer/ENoOp
|__执行建立的类对象的decode()函数来解析bufferlist到类对象,即:le->decode(p)