我有一些看起来像这样的代码:
boost::iostreams::filtering_istreambuf in;
in.push(Lz4DecompressionFilter());
in.push(AesDecryptionFilter());
in.push(file_source("somefile"));
我已经有存储结果长度的元数据:
std::vector<char> buf;
buf.reserve(resultLength /* retrieved from a meta-data server */);
std::streamsize ret = in.read(buf, buf.capacity);
通过添加跟踪点,我观察到 Lz4 和 Aes 过滤器只能读取 128 个字节。此外,如果我file_source
用自定义设备替换,它只能读取 4096 字节。
由于我确切地知道读取应该具有的大小,有没有办法完全禁用 iostreams 中的缓冲并将读取链接到过滤器?我知道我可以更改缓冲区大小,但我有兴趣完全禁用它们。