Google协议缓冲区,在提供的流对象中向后重新定位IO头
Google Protocol Buffers, backward reposition IO head in the stream objects provided
我想把IO头移到某个CodedOutputStream或ZeroCopyOutputStream的开头,这样我就可以用文件中有多少protobuf消息以及下面的消息消耗了多少字节来更新头数据结构。
备份功能不适用于此,有什么建议吗?我正在为事件数据创建一种文件格式,其中每个文件包含多个事件数据集。我需要两种类型的头实体(固定大小)一种是全局的,另一种是每个数据集的。我在写入数据集事件后更新了这些。那么,如何在不损坏流对象的内部状态的情况下移动写标头?。
编辑
我想知道,如果我刷新流包装器,只使用c函数重新封装头部,这对流类有效吗?还是我最终会陷入未定义的境地?
我想最明显的方法是有两个文件,而不是每个文件:一个是包含流式数据的主文件,然后是包含标头信息的索引文件。
相关文章:
- 重新定位图像时如何前进到下一个内存块
- 流填充字符的默认定位
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- NS3 - python.h 文件无法定位编译错误
- 设置我的应用程序 API 感知并防止系统使其模糊和错误定位
- GLEW 未在 MSYS2 上定位 OpenGL 函数
- c++ 链接器错误"针对'.rodata.str1.1'的重新定位R_X86_64_32"链接 CXX 共享库 libsrt.so
- 如何忽略32位整数中的特定位
- 如何在C++中使用光标定位
- 使用 stdio.h 重新定位和重命名文件C++
- R 包安装错误:重新定位 0 具有无效的符号索引 11
- 对于可重定位的多平台安装,理想的 cmake 安装目录结构是什么?
- 不能使用使用 lib*.a 的 CDT ---对符号 .. 的重新定位R_X86_64_32S
- 如何在VS2015中重新定位VS2017解决方案?
- 使用 for_each 和 lambda 销毁已定位的对象
- 在"for loop"中使用GOTOXY定位
- 是否可以为虚幻引擎/Unity制作64位定位系统?
- 干净地破坏动态定位对象的向量
- 使用ENVDTE时的Java脚本-将新项目添加到现有解决方案中,并将其定位在特定的子文件夹中