首页 > 后端开发 > C++ > C 协议缓冲区定界 I/O:是否有与 Java 等效的函数?

C 协议缓冲区定界 I/O:是否有与 Java 等效的函数?

Barbara Streisand
发布: 2024-12-05 00:32:12
原创
217 人浏览过

C   Protocol Buffer Delimited I/O: Are There Java-Equivalent Functions?

Protocol Buffers 分隔的 I/O 函数:C 等效项?

在尝试使用 C 和 Java 从文件中读取和写入多个 Protocol Buffers 消息时,它有据观察,Java 为此目的提供了一组“定界”I/O 函数。然而,C 是否提供类似的功能仍不确定。

Java API 函数是:

  • parseDelimitedFrom
  • mergeDelimitedFrom
  • writeDelimitedTo

C等效项

从版本 3.3.0 开始,Google 通过在 google/protobuf/util/delimited_message_util.h 中引入以下 C 等效项解决了此问题:

bool writeDelimitedTo(
    const google::protobuf::MessageLite& message,
    google::protobuf::io::ZeroCopyOutputStream* rawOutput) {
  // Code to write delimited messages
}

bool readDelimitedFrom(
    google::protobuf::io::ZeroCopyInputStream* rawInput,
    google::protobuf::MessageLite* message) {
  // Code to read delimited messages
}
登录后复制

Java 大小的有线格式前缀

对于那些寻求在 C 中解析大小前缀消息而不使用官方的人库,传输格式如下:

  1. 消息的大小以 32 位变长整数表示。
  2. 在大小后添加一个字节以确保向后兼容性。
  3. 消息数据附加在大小和兼容性之后byte.

优化

提供的 C 实现包括其他响应中缺少的优化。这些优化确保功能:

  • 在 64MB 输入后不会失败。
  • 对每条消息强制执行 64MB 限制。
  • 使用更快的直接-尽可能到数组序列化路径。

以上是C 协议缓冲区定界 I/O:是否有与 Java 等效的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板