文章目录

  • 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;}
};

参考资料:

  1. C/C++从入门到精通-高级程序员之路【奇牛学院】

索引文件核心头文件定义相关推荐

  1. C/C++:多个.cpp文件包括同一个.h头文件定义方法

    本文解决multiple definition of `XX'的错误.[出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的.] 关于头文 ...

  2. 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)

    文章目录 一.头文件定义 1.头文件导入限制 2.兼容 C++ 语言 3.函数形参输入输出属性 4.代码示例 一.头文件定义 1.头文件导入限制 头文件导入限制 : 防止头文件多次导入 , 将头文件的 ...

  3. sphinx索引文件进一步说明——最好是结合lucene一起看,直觉告诉我二者本质无异...

    摘自:http://blog.csdn.net/cangyingzhijia/article/details/8592441 Sphinx使用的文件包括 "sph", " ...

  4. RocketMQ:消息消费队列与索引文件的实时更新以及文件恢复源码解析

    文章目录 消息存储 1.实时更新消息消费队列和索引文件 1.1.转发到ConsumerQueue 1.2.转发到Index 2.消息队列和索引文件恢复 2.1.存储文件加载 2.1.1.加载commi ...

  5. IOS之优秀PCH头文件定义

    IOS之优秀PCH头文件定义 //#ifndef PrefixHeader_pch //#define PrefixHeader_pch //#endif /* PrefixHeader_pch */ ...

  6. 59.排序好的大数据创建索引文件,并实现大文件的二分查找,根据索引百万数据秒读数据...

    创建索引 1 //创建索引 2 struct index 3 { 4 //保存每行偏移的位置 5 int *pindex; 6 //文件的总长度 7 int length; 8 }allindex;/ ...

  7. 系统大小端的头文件定义

    系统大小端的头文件定义 系统大小端的判断,虽说可以写函数来判断,但有时需要在预处理时就知道大小端,可使用C库头文件<endian.h>来判断,写法入下: 1.#include <en ...

  8. 解析RocketMQ的消息索引文件consumequeue

    CommitLog的文件结构 下图展示了CommitLog的文件结构,可以看到,包含了topic.queueId.消息体等核心信息. 同Kafka一样,消息是变长的,顺序写入. 如下图所示: Cons ...

  9. nvd、nvm索引文件的生成

    核心类图 写入过程 索引文件 nvd nvm 参考 nvd, nvm文件主要描述的是索引阶段每个 Field的域标准化值. 核心类图 图1(核心类图) 1⃣️NormsFormat主要负责生成Norm ...

最新文章

  1. oracle 11g 大小,修改oracle 11GR2归档模式和归档目录及大小-Oracle
  2. php mysql读写分离主从复制_mysql主从复制 读写分离原理及实现
  3. RecyclerView滑动到指定位置,并置顶
  4. 通过100个单词掌握英语语法(十六) come
  5. ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
  6. 用到f6的快捷键_让你的办公效率成倍翻得快捷键。
  7. 博弈-巴什博弈-P/N图
  8. photoshop cs3 无法复制文字的解决方案
  9. navicat 中文注册码
  10. 直播带货软件开发,android的仿制直播点赞功能特效
  11. QT遍历 Json 根节点
  12. 【odoo】odoo使用阿里邮箱配置邮件系统
  13. 字符串Hash函数对比
  14. 《乌云背后的幸福线》
  15. 信息学奥赛一本通1182 合影效果
  16. ▽算符在球坐标系_球坐标系中的角动量算符
  17. 国外的云服务器网站推荐哪一家(在国内可以直接上的那种)?
  18. MATLAB 电力系统潮流计算(采用稀疏矩阵,可计算1000节点)
  19. GEO数据挖掘全流程分析
  20. 【QtScrcpy】开源的投屏控制软件 - 安利

热门文章

  1. 5.9、离散卷积的一般描述
  2. LINUX 使用tcgetattr函数与tcsetattr函数控制终端五
  3. 一文读懂全系列树莓派!
  4. 【进展】不只是感谢信,物联网平台哪家强?冰箱运行监测系统项目重启
  5. 示波器到底选择多大的带宽合适
  6. 【Verilog】模16可逆流水灯
  7. 「从源码中学习」面试官都不知道的Vue题目答案
  8. 云计算怎么支撑起《流浪地球》的硬科幻实力?
  9. Nginx Web服务应用
  10. 深度解析(十五)哈夫曼树