索引文件核心头文件定义
文章目录
- 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;}
};
参考资料:
- C/C++从入门到精通-高级程序员之路【奇牛学院】
索引文件核心头文件定义相关推荐
- C/C++:多个.cpp文件包括同一个.h头文件定义方法
本文解决multiple definition of `XX'的错误.[出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的.] 关于头文 ...
- 【C 语言】文件操作 ( 配置文件读写 | 框架搭建 | 头文件定义 | 头文件导入限制 | 兼容 C++ 语言 | 函数形参输入输出属性注释)
文章目录 一.头文件定义 1.头文件导入限制 2.兼容 C++ 语言 3.函数形参输入输出属性 4.代码示例 一.头文件定义 1.头文件导入限制 头文件导入限制 : 防止头文件多次导入 , 将头文件的 ...
- sphinx索引文件进一步说明——最好是结合lucene一起看,直觉告诉我二者本质无异...
摘自:http://blog.csdn.net/cangyingzhijia/article/details/8592441 Sphinx使用的文件包括 "sph", " ...
- RocketMQ:消息消费队列与索引文件的实时更新以及文件恢复源码解析
文章目录 消息存储 1.实时更新消息消费队列和索引文件 1.1.转发到ConsumerQueue 1.2.转发到Index 2.消息队列和索引文件恢复 2.1.存储文件加载 2.1.1.加载commi ...
- IOS之优秀PCH头文件定义
IOS之优秀PCH头文件定义 //#ifndef PrefixHeader_pch //#define PrefixHeader_pch //#endif /* PrefixHeader_pch */ ...
- 59.排序好的大数据创建索引文件,并实现大文件的二分查找,根据索引百万数据秒读数据...
创建索引 1 //创建索引 2 struct index 3 { 4 //保存每行偏移的位置 5 int *pindex; 6 //文件的总长度 7 int length; 8 }allindex;/ ...
- 系统大小端的头文件定义
系统大小端的头文件定义 系统大小端的判断,虽说可以写函数来判断,但有时需要在预处理时就知道大小端,可使用C库头文件<endian.h>来判断,写法入下: 1.#include <en ...
- 解析RocketMQ的消息索引文件consumequeue
CommitLog的文件结构 下图展示了CommitLog的文件结构,可以看到,包含了topic.queueId.消息体等核心信息. 同Kafka一样,消息是变长的,顺序写入. 如下图所示: Cons ...
- nvd、nvm索引文件的生成
核心类图 写入过程 索引文件 nvd nvm 参考 nvd, nvm文件主要描述的是索引阶段每个 Field的域标准化值. 核心类图 图1(核心类图) 1⃣️NormsFormat主要负责生成Norm ...
最新文章
- oracle 11g 大小,修改oracle 11GR2归档模式和归档目录及大小-Oracle
- php mysql读写分离主从复制_mysql主从复制 读写分离原理及实现
- RecyclerView滑动到指定位置,并置顶
- 通过100个单词掌握英语语法(十六) come
- ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?
- 用到f6的快捷键_让你的办公效率成倍翻得快捷键。
- 博弈-巴什博弈-P/N图
- photoshop cs3 无法复制文字的解决方案
- navicat 中文注册码
- 直播带货软件开发,android的仿制直播点赞功能特效
- QT遍历 Json 根节点
- 【odoo】odoo使用阿里邮箱配置邮件系统
- 字符串Hash函数对比
- 《乌云背后的幸福线》
- 信息学奥赛一本通1182 合影效果
- ▽算符在球坐标系_球坐标系中的角动量算符
- 国外的云服务器网站推荐哪一家(在国内可以直接上的那种)?
- MATLAB 电力系统潮流计算(采用稀疏矩阵,可计算1000节点)
- GEO数据挖掘全流程分析
- 【QtScrcpy】开源的投屏控制软件 - 安利