libRaptorQ, RaptorQ RFC6330 C++11实现

分享于 

6分钟阅读

GitHub

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

    build status
    DonateDonate
    主页

    稳定发行:英镑
    当前版本:v1.0.0 -alpha1

    为有效传递数据而设计的前向纠错纠错算法( RaptorQ ),而无需重新传输丢失的数据包。

    在发送数据的K 包之后,RaptorQ会根据需要生成多个修复符号。 一旦接收器至少有K 符号,就是源符号,修复符号或者任何二者的组合。

    这被称为喷泉代码,而RaptorQ是这个类别中最最新最有效的代码。

    英镑 libRaptorQ 实现英镑 RFC6330,它指定RaptorQ算法。
    由于RFC非常复杂,所以还可以使用一个简单的( 也许稍微快一点) 原始 API。 不推荐 RFC API,因为RFC复杂性。

    libRaptorQ是仅用 C++11 编写的头库,并使用 Eigen 来处理矩阵操作。
    库只需编译即可创建具有C 和兼容性的共享和共享库。

    目前它只在Linux下进行测试,但在 *BSD 和MacOSX下也能很好。

    不幸的是,Windows 不支持。 支持已损坏,因此你无法用 Visual Studio 2015编译它。

    特性

    • RFC6330 API ( 复杂,不推荐)
    • 原始 API ( 简单,推荐)
    • 多语言:
      • 标头仅 C++11
      • 编译,C
      • 编译,C++98
    • 缓存的precomputations ( 可以配置)

    插件开发人员

    请参见贡献的文件。

    源代码

    虽然一切正常,但还没有释放稳定的版本。

    这意味着你只能用git来查看。

    要查看存储库:

    $ git clone https://github.com/LucaFulchir/libRaptorQ.git

    你还可以从我们的主服务器获取它:

    $ git clone https://www.fenrirproject.org/Luker/libRaptorQ.git

    GPG源检查

    一旦你克隆了它,检查存储库tftp签名总是一件好事,因这里你可以导入我的密钥:

    新的长期密钥:英镑 7393 DAD2 55BE B575 1DBD A04A B11C D823 BA27 8 C85
    $ gpg --keyserver pgp.mit.edu --recv-key 7393DAD255BEB5751DBDA04AB11CD823BA278C85
    2016键:
    $ gpg --keyserver pgp.mit.edu --recv-key F61F6137
    2015键:
    $ gpg --keyserver pgp.mit.edu --recv-key D42DDF0A

    请检查完整指纹。

    现在,你已经有了源和密钥,它足以检查最后一次提交的签名:

    $ git log -n 1 --show-signature

    只要你找到正确的钥匙你就能找到" 你可以肯定你有正确的代码。

    安装

    依赖项

    libRaptorQ由英镑的Eigen3 和英镑的LZ4
    如果系统没有 Eigen3,源文件中包含 Eigen v3.2.8,那么你不需要它。
    LZ4被包含为git子模,所以如果你没有它,请运行:
    git submodule init
    git submodule update
    获取库,该库将静态链接,并且在你的系统上不安装。

    建筑

    构建系统使用 CMake。 输入源目录,我们将创建一个目录并在那里构建所有的东西:

    $ mkdir build
    $ cd build
    $ cmake -DCMAKE_BUILD_TYPE=Release.. /
    $ make -j 4

    可选目标有:
    $ make tests examples docs
    其中:

    • 测试:基准测试,rfc测试。
    • 示例:C/C++ 示例
    • 文档:LaTeX 文档。

    或者:
    $ make -j 4 everything

    最后,安装所有
    $ make install

    如果你在两个不同的计算机上编译,那么,结果库的哈希值将是相同的,因此libRaptorQ使用英镑的确定的( 可以重复) 构建。

    注意:编译器和 lto/剖析的组合破坏了确定性构建,因此,检查cmake警告。

    你可以使用以下变量自定义插件生成:

    
    PROFILING ON/OFF: Default:ON. Activate or deactivate profiling.
    
    
     Profiling compiles everything, then runs a test to see
    
    
     which code paths are more used. Then it recompiles everything
    
    
     but optimizing for for those code paths.
    
    
     Only for gcc/clang.
    
    
    LTO ON/OFF: Default:ON. Activate or deactivate Link time Optimization
    
    
     Makes the library smaller and better optimized.
    
    
     Only for gcc/clang.
    
    
    CLANG_STDLIB ON/OFF: Default:OFF. use clang's libc++
    
    
     Note: only clang can use its standard library
    
    
    USE_LZ4 ON/OFF: use the lz4 compression for caching precomputations.
    
    
     Default: ON
    
    
    CLI ON/OFF Build Command Line Interface tools.
    
    
    CMAKE_C_COMPILER gcc, clang...
    
    
    CMAKE_CXX_COMPILER choose between g++ or clang++.
    
    
    RQ_LINKER gold/ld/bsd Choose your linker. Default:autodetect.
    
    
    CMAKE_BUILD_TYPE Debug,MinSizeRel,Release,RelWithDebInfo
    
    
    CMAKE_INSTALL_PREFIX Default:/usr/local
    
    
    
    

    使用 libRaptorQ

    对于 C++11,仅标题版本,你可以包括:

    • "raptorq/raptorq_v1_hdr。hpp"
    • "raptorq/rfc6330_v1_hdr。hpp"

    对于链接的c+98/c++11 API:

    • "raptorq/raptorq_v1.hpp"
    • "raptorq/rfc6330_v1.hpp"

    对于链接的,C API:

    • "raptorq/raptorq。h"
    • "raptorq/rfc6330.h"

    在链接和头文件之间,C++ api完全同步,因此你可以通过更改包含的头文件来在两者之间进行 switch。

    你可以通过执行以下操作来编译文档的PDF:
    $ make docs

    或者你可以简单地访问 wiki插件以获得完整的最新文档。


    相关文章