protozero, 在 C++ 中,最小协议缓冲区解码器和编码器

分享于 

6分钟阅读

GitHub

  繁體 雙語
A protocol buffer decoding implementation in C++.
  • 源代码名称:protozero
  • 源代码网址:http://www.github.com/mapbox/protozero
  • protozero源代码文档
  • protozero源代码下载
  • Git URL:
    git://www.github.com/mapbox/protozero.git
    Git Clone代码到本地:
    git clone http://www.github.com/mapbox/protozero
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/mapbox/protozero
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    protozero

    C++ 中最小协议缓冲解码器和编码器。

    设计为高性能。适用于编写零复制解析器和编码器,最少需要运行时间分配。

    低级:这是为了为稳定的protobuf模式编写一个非常定制的解码器而设计的一个构建 block。 如果你的protobuf模式经常更改或者延迟解码对于应用程序来说不重要,则这里方法不提供任何值: 使用 C++ Protobufs protoc 程序可以生成的API。

    Travis Build StatusAppveyor Build StatusCoverage StatusPackaging status

    依赖

    • C++11编译器
    • 控件
    • 一些测试依赖于Protobuf库,但Protozero的使用并不需要它

    工作原理

    protozero代码对通常的实现所使用的.proto 读取文件 使用protozero的开发人员必须手动将 .proto 描述"翻译"。 这意味着没有办法从 .proto 描述中访问任何信息。 这将导致一些限制:

    • 字段的名称不可用。
    • enum 名称不可用,你必须使用它们定义的值。
    • 默认值不可用。
    • 必须硬编码字段类型。 库不知道需要哪些类型,因此库的用户必须提供正确的类型。 有些检查使用 assert(),但大部分用户都必须负责。

    库将确保不要超过它所提供的缓冲区,但基本上所有它的他检查都必须在用户代码中进行。

    文档

    你必须对协议缓冲区编码如何工作具有一定的工作经验。

    构建过程还将构建基于Doxygen的参考文档,如果你安装了 然后在浏览器中打开 doc/html/index.html 以读取它。

    字节

    Protozero使用一个非常简单的测试来检查它编译的系统的字节顺序。 如果这里检查错误,你将获得测试失败。 如果是这样,请打开 issue,并告诉我们你的系统。

    插件生成测试

    包括大量测试。使用 CMake: 构建它们:

    
    mkdir build
    
    
    cd build
    
    
    cmake.. 
    
    
    make
    
    
    
    

    调用 ctest 以运行测试。

    总是构建读取器测试,如果在运行is时发现了 Google Protobuf库,编写器测试就会生成。

    有关测试的更多详细信息,请参见 test/README.md

    覆盖率报告

    要获得覆盖报告,请在调用CMake之前设置 CXXFLAGSLDFLAGS:

    
    CXXFLAGS="--coverage" LDFLAGS="--coverage" cmake.. 
    
    
    
    

    然后照常调用 make 并使用 ctest 运行测试。

    如果使用 g++,则使用 gcov 生成报表( 结果在 *.gcov 文件中):

    
    gcov -lp $(find test/-name '*.o')
    
    
    
    

    如果你使用的是 clang++,则使用 llvm-cov:

    
    llvm-cov gcov -lp $(find test/-name '*.o')
    
    
    
    

    如果使用 g++,你可以使用 gcovr 生成漂亮的HTML输出:

    
    mkdir -p coverage
    
    
    gcovr. -r SRCDIR --html --html-details -o coverage/index.html
    
    
    
    

    在浏览器中打开 coverage/index.html 以查看报表。

    在引导步骤之后,运行

     
    make clang-tidy
    
    
    
     

    clang 检查代码。 你可能必须在配置配置中设置 CLANG_TIDY

    Cppcheck

    有关 Cppcheck的额外检查,可以在引导步骤之后调用

     
    make cppcheck
    
    
    
     

    安装

    在引导步骤之后,调用 make install/usr/local/include/protozero 中安装包含文件。

    如果使用in构建自己的软件,可以复制文件 cmake/FindProtozero.cmake 并在构建中使用它。 有关详细信息,请参阅文件。

    ,使用 Protozero?

    你在用Protozero告诉我们? ! 发送对这里自述文件的更改的请求请求。


    proto  dec  protocol  Minim  protoc  minima