Single threaded, aysnc and queued transport api for QUICR
- Needs C++20 clang, and cmake
- Download and install openssl
- on a mac you can do '
brew install openssl
- find where it is
brew info openssl
- set path to find it
export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
- Clone the repos
git clone [email protected]:Quicr/transport.git
cd transport
git submodule update --init --recursive
- In the same parent directory, run
- make all
- make client
- make server
In order to test QUIC, the server needs to have a certificate. The program expects the
Generate self-signed certificate for really server to test with
with BoringSSL:
openssl req -nodes -x509 -newkey rsa:2048 -days 365 -keyout server-key.pem -out server-cert.pem
with MbedTLS:
openssl req -nodes -x509 -newkey ec:<(openssl ecparam -name secp256r1) -days 365 -subj "/C=US/ST=CA/L=San Jose/O=Cisco/CN=test.quicr.ctgpoc.com" -keyout server-key.pem -out server-cert.pem
Run:
RELAY_PORT=1234 build/cmd/server
and
RELAY_HOST=localhost RELAY_PORT=1234 build/cmd/client
This project generally follows Google's and Mozilla's C++ styling, specifically enforced for naming and formatting: https://google.github.io/styleguide/cppguide.html
Linting via clang-tidy can be enabled via passing the -DLINT=ON
option to CMake, which is what CI will enforce.
clang-format
can be run be run by running make format
. CI will enforce this. A pre-commit file for clang-format is provided, which you can install using pre-commit install
.
- cmd/ - has client and server examples