ibstream_view Class¶
提供二进制反序列化功能。
注意
在反序列化过程中,当剩余数据不足时会抛出 std::out_of_range
异常。
语法¶
namespace yasio {
// 反序列化过程,会自动转换字节序,适用于网络传输
using ibstream_view = basic_ibstream_view<endian::network_convert_tag>;
// 反序列化过程,无字节序转换,性能更快
using fast_ibstream_view = basic_ibstream_view<endian::host_convert_tag>;
}
成员¶
公共构造¶
Name | Description |
---|---|
ibstream_view::ibstream_view | 构造1个 ibstream_view 对象 |
公共方法¶
Name | Description |
---|---|
ibstream_view::reset | 重置待反序列化数据 |
ibstream_view::read | 函数模板,读取数值 |
ibstream_view:read_ix | 函数模板,读取(7bit Encoded Int/Int64)整数值 |
ibstream_view:read_v | 读取带长度域(7bit Encoded Int/Int64)的二进制数据 |
ibstream_view:read_byte | 读取1个字节 |
ibstream_view:read_bytes | 读取指定长度二进制数据 |
ibstream_view::empty | 检查流是否为空 |
ibstream_view::data | 获取流数据指针 |
ibstream_view::length | 获取流大小 |
ibstream_view::advance | 向前移动流的读取游标 |
ibstream_view::seek | 移动流的读取游标 |
注意¶
ibstream_view
借鉴C++17标准的 std::string_view
, 意味着在初始化和反序列化过程中不会产生任何GC。
要求¶
头文件: ibstream.hpp
ibstream_view::ibstream_view¶
构造一个 ibstream_view
对象。
参数¶
data
待反序列化二进制数据首地址。
size
待反序列化二进制数据大小。
obs
已序列化的流。
ibstream_view::reset¶
重置 ibstream_view
缓冲视图。
参数¶
data
待反序列化二进制数据首地址。
size
待反序列化二进制数据大小。
ibstream_view::read¶
从流中读取数值。
返回值¶
返回读到的值
注意¶
_Nty 实际类型可以是任意1~8字节整数类型或浮点类型。
ibstream_view::read_ix¶
读取7Bit Encoded Int压缩编码的整数值。
返回值¶
32/64位整数值。
注意¶
_Intty 的必须是以下类型
- int32_t
- int64_t
本函数兼容于 Microsoft dotnet 如下函数
ibstream_view::read_v¶
读取变长二进制数据。
返回值¶
返回读取到的二进制数据视图,无GC。
注意¶
本函数会先读取7bit Encoded Int压缩编码的长度值,再调用 read_bytes 读取二进制字节数据。
ibstream_view::read_byte¶
读取1个字节。
返回值¶
uint8_t值。
注意¶
本函数等价于 ibstream_view::read<uint8_t>
ibstream_view::read_bytes¶
读取指定长度字节数据,无GC。
返回值¶
二进制数据的 cxx17::string_view
类型视图。
ibstream_view::empty¶
判断流是否为空。
返回值¶
true
空; false
流中至少包含1个字节。
注意¶
此方法等价于 length == 0。
ibstream_view::data¶
返回流数据指针。
返回值¶
返回指向流中第一个字节的指针。
ibstream_view::length¶
获取流长度。
返回值¶
当前流长度。
ibstream_view::advance¶
向前移动流读取游标。
参数¶
offset
要向前移动的偏移量。
注意¶
若*offset*传负数,则反向可移动读取游标。
ibstream_view::seek¶
移动读取游标。
参数¶
offset
和*whence*相关的偏移量。
whence
含义等同于C标准库枚举值: SEEK_SET
,SEEK_CUR
,SEEK_END
。
返回值¶
返回移动后相对于流首字节偏移。
ibstream Class¶
提供二进制数据加载和反序列化功能。
语法¶
namespace yasio {
using ibstream = basic_ibstream<endian::network_convert_tag>;
// 反序列化过程,无字节序转换,性能更快
using fast_ibstream = basic_ibstream<endian::host_convert_tag>;
}
成员¶
公共构造函数¶
Name | Description |
---|---|
ibstream::ibstream | 构造1个 ibstream 对象 |
公共方法¶
Name | Description |
---|---|
ibstream::load | 从文件加载流 |
继承层次结构¶
ibstream
ibstream::ibstream¶
构造一个 ibstream
对象。
参数¶
blob
输入二进制流。
obs
已序列化的 obstream
对象。
ibstream::load¶
从文件加载.
返回值¶
true
加载成功,false
加载失败。
示例¶
请查看 obstream::save