levelDB里自定义的状态
LevelDB状态码
LevelDB里专门定义了Status类,自定义了常见的状态码,用于函数的返回。
状态码类型
在Status类中以枚举类型定义Code:
0 => 处理成功
1 => 未找到
2 => 崩溃
3 => 不支持
4 => 无效的参数
5 => IO错误
并且有6个静态方法用来生成对应状态码的Status对象, 和4个判断方法来方便确认状态。
存储方式
状态码包括状态信息都是利用私有字符串变量state_存储,存储方式如下:
0 ~ 4字节:消息长度(消息1的长度len1+分割符的长度+消息2的长度len2)
4 ~ 5字节:状态码
5 ~ 5+len1:消息1的长度
(若消息2不为空)
5+len1 ~ 7+len1:分隔符的长度(分隔符为2个字符,分别为冒号和空格)
7+len1 ~ 7+len1+len2:消息2的长度
这种存储方式,另得所有操作都是基于这个state_变量的下标索引操作。
小结
定义异常在其它代码遇到错误时可以抛出适当的异常, 这样的实现方式我认为好处是初始化,销毁和复制操作简单,并且这些内容在内存中的位置紧密,有利于缓存,不知道是不是这样考虑才这么做的,但分成3个变量也无伤大雅。