From b1f1396d8eb009ae6f5a25acbcfcdc25d57e076e Mon Sep 17 00:00:00 2001 From: kelbon <58717435+kelbon@users.noreply.github.com> Date: Thu, 17 Oct 2024 01:01:22 +0400 Subject: [PATCH] Create README.md --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..cde824a --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ + +Complete implementation of HPACK (Header Compression for HTTP/2, fully compliant RFC 7541) + +encode: + +```cpp +#include + +void encode_my_headers(hpack::encoder& enc, std::vector& bytes;) { + // memory effective by default + enc.encode("name", "value", std::back_inserter(bytes)); + // or by hands + enc.encode_header_fully_indexed(hpack::static_table_t::status_200, std::back_inserter(bytes)); +} + +``` + +decode + +```cpp +#include + +void decode_my_headers(hpack::decoder& d, std::span bytes) { + hpack::decode_headers_block(e, bytes, [&](std::string_view name, std::string_view value) { + // use name/value somehow + }); +} + +``` + +adding with cmake: + +Preferred way with [CPM](https://github.com/cpm-cmake/CPM.cmake) + +```cmake + +CPMAddPackage( + NAME HPACK + GIT_REPOSITORY https://github.com/kelbon/HPACK + GIT_TAG origin/master +) + +target_link_libraries(MyTargetName hpacklib) + +``` + +simple way with fetch content: + +```cmake + +include(FetchContent) +FetchContent_Declare( + HPACK + GIT_REPOSITORY https://github.com/kelbon/HPACK + GIT_TAG origin/master +) +FetchContent_MakeAvailable(HPACK) +target_link_libraries(MyTargetName hpacklib) + +```