索引文件核心头文件定义
生活随笔
收集整理的這篇文章主要介紹了
索引文件核心头文件定义
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1 BlockInfo
- 2 MetaInfo
1 BlockInfo
定義直接放在common.h中:
struct BlockInfo {uint32_t block_id_;int32_t version_;int32_t file_count_;int32_t size_;int32_t del_file_count_;int32_t del_size_;uint32_t seq_no_;BlockInfo(){memset(this, 0, sizeof(BlockInfo));}inline bool operator==(const BlockInfo& rhs) const{return block_id_ == rhs.block_id_ && version_ == rhs.version_ && file_count_ == rhs.file_count_&& size_ == rhs.size_ && del_file_count_ == rhs.del_file_count_ && del_size_ == rhs.del_size_ && seq_no_ == rhs.seq_no_;} };2 MetaInfo
MetaInfo的定義也直接放在common.h中:
struct MetaInfo {public:MetaInfo(){init();}MetaInfo(const uint64_t file_id, const int32_t in_offset, const int32_t file_size, const int32_t next_meta_offset){fileid_ = file_id;location_.inner_offset_ = in_offset;location_.size_ = file_size;next_meta_offset_ = next_meta_offset;}MetaInfo(const MetaInfo& meta_info){memcpy(this, &meta_info, sizeof(MetaInfo));}MetaInfo& operator=(const MetaInfo& meta_info){if(this == &meta_info){ return *this;}fileid_ = meta_info.fileid_;location_.inner_offset_ = meta_info.location_.inner_offset_ ;location_.size_ = meta_info.location_.size_;next_meta_offset_ = meta_info.next_meta_offset_;}MetaInfo& clone(const MetaInfo& meta_info){assert(this != &meta_info);fileid_ = meta_info.fileid_;location_.inner_offset_ = meta_info.location_.inner_offset_ ;location_.size_ = meta_info.location_.size_;next_meta_offset_ = meta_info.next_meta_offset_;return *this;}bool operator == (const MetaInfo& rhs) const{return fileid_ == rhs.fileid_ && location_.inner_offset_ == rhs.location_.inner_offset_ && location_.size_ == rhs.location_.size_&& next_meta_offset_ == rhs.next_meta_offset_;}uint64_t get_key() const {return fileid_;}void set_key(const uint64_t key){fileid_ = key;}uint64_t get_file_id() const {return fileid_;}void set_file_id(const uint64_t file_id){fileid_ = file_id;}int32_t get_offset() const{return location_.inner_offset_;}void set_offset(const int32_t offset){location_.inner_offset_ = offset;}int32_t get_size() const{return location_.size_;}void set_size(const int32_t file_size){location_.size_ = file_size;}int32_t get_next_meta_offset() const{return next_meta_offset_;}void set_next_meta_offset(const int32_t offset){next_meta_offset_ = offset;}private:uint64_t fileid_;struct{int32_t inner_offset_;int32_t size_;}location_;int32_t next_meta_offset_;private:void init(){fileid_ = 0;location_.inner_offset_ = 0;location_.size_ = 0;next_meta_offset_ = 0;} };參考資料:
總結
以上是生活随笔為你收集整理的索引文件核心头文件定义的全部內容,希望文章能夠幫你解決所遇到的問題。