You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Ruslan Tushov c96d45f792
yamux close underlying stream (#277)
3 weeks ago
.githooks Refactor: format, include-guards, copyrights, git-hooks (#222) 1 year ago
.github fix injector compiler error (#269) 1 month ago
cmake Bump hunter (#276) 4 weeks ago
example kad put (#274) 4 weeks ago
housekeeping lsquic (#254) 1 month ago
include/libp2p yamux close underlying stream (#277) 3 weeks ago
src yamux close underlying stream (#277) 3 weeks ago
test kad put (#274) 4 weeks ago
.clang-format Refactor: format, include-guards, copyrights, git-hooks (#222) 1 year ago
.clang-tidy Replace Microsoft.GSL by STL analogs (#221) 1 year ago
.gitignore Enable Code Coverage (#112) 4 years ago
.gitmodules remove dependencies from deps, check them out as external projects (#12) 5 years ago
.lcovrc Initial commit 5 years ago
CMakeLists.txt fix websocket transport (#238) 7 months ago
LICENSE-APACHE MIT and ASLv2 licenses (#76) 4 years ago
LICENSE-MIT MIT and ASLv2 licenses (#76) 4 years ago
README.md Corrected Hunter link in README (#251) 5 months ago
codecov.yml Enable Code Coverage (#112) 4 years ago
docker-compose.yml Refactor: format, include-guards, copyrights, git-hooks (#222) 1 year ago
funding.json Create funding.json (#261) 1 month ago

README.md

CPP-Libp2p

Fully compatible C++17 implementation of libp2p library

Libp2p is a modular networking stack described in spec

Dependencies

All dependencies are managed using Hunter. It uses cmake to download required libraries and does not require downloading and installing packages manually. Target C++ compilers are:

  • GCC 7.4
  • Clang 6.0.1
  • AppleClang 11.0

Supported protocols

Development

Clone

To clone repository execute

git clone https://github.com/libp2p/libp2p-cpp.git

Build cpp-libp2p

First build will likely take long time. However, you can cache binaries to hunter-binary-cache or even download binaries from the cache in case someone has already compiled project with the same compiler. To do so you need to set up two environment variables:

GITHUB_HUNTER_USERNAME=<github account name>
GITHUB_HUNTER_TOKEN=<github token>

To generate github token follow the instructions. Make sure read:packages and write:packages permissions are granted (step 7 in instructions).

This project can be built with

mkdir build && cd build
cmake -DCLANG_TIDY=ON ..
make -j

It is suggested to build project with clang-tidy checks, however if you wish to omit clang-tidy step, you can use cmake .. instead.

Tests can be run with:

cd build
ctest

CodeStyle

We follow CppCoreGuidelines.

Please use provided .clang-format file to autoformat the code.

Examples

Please explore example section to read examples of how to use the library

Adding cpp-libp2p to the project

cpp-libp2p can be integrated using hunter. Adding hunter support to your project is really simple and require you only to add some cmake. Check hunter example project for details.

After hunter is integrated adding cpp-libp2p can be done by adding these lines to cmake:

hunter_add_package(libp2p)
find_package(libp2p REQUIRED)

To set which version of cpp-libp2p to use it is required to add these lines to Hunter/config.cmake file:

hunter_config(libp2p
    URL https://github.com/libp2p/cpp-libp2p/archive/dad84a03a9651c7c2bb8a8f17d0e5ea67bd10b4f.zip
    SHA1 860742c6e3e9736d68b392513d795e09572780aa
    )

Where URL is the link to archive of certain commit in cpp-libp2p repo and SHA1 is the checksum of this archive. By simply updating URL and SHA1 it is possible to change the version of cpp-libp2p in another project.

Example of adding cpp-libp2p to other project can be found here and here

Notable users

Maintenance

Maintainers: @Warchant, @kamilsa, @harrm, @masterjedy, @igor-egorov, @art-gor

Tickets: Can be opened in Github Issues.