Commit bcb826cf authored by jan.koester's avatar jan.koester
Browse files

test

parent bddd035b
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -640,6 +640,34 @@ std::vector<char> libhttppp::HttpClient::_h1ReadResponse(const std::string &labe
    return ret;
}

// Forward declarations for H2/H3 helpers (defined later in this file)
static size_t h3EncodeVarInt(uint64_t value, uint8_t *out);
static uint64_t h3DecodeVarInt(const uint8_t *data, size_t len, size_t &bytes_read);
static void h3AppendFrame(std::vector<uint8_t> &out, uint64_t type, const std::vector<uint8_t> &payload);

static constexpr uint8_t H2C_FRAME_DATA         = 0x00;
static constexpr uint8_t H2C_FRAME_HEADERS      = 0x01;
static constexpr uint8_t H2C_FRAME_SETTINGS     = 0x04;
static constexpr uint8_t H2C_FRAME_PING         = 0x06;
static constexpr uint8_t H2C_FRAME_GOAWAY       = 0x07;
static constexpr uint8_t H2C_FRAME_WINDOW_UPDATE = 0x08;

static constexpr uint8_t H2C_FLAG_END_STREAM  = 0x01;
static constexpr uint8_t H2C_FLAG_ACK         = 0x01;
static constexpr uint8_t H2C_FLAG_END_HEADERS = 0x04;

static constexpr size_t  H2C_FRAME_HEADER_LEN = 9;
static constexpr size_t  H2C_MAX_FRAME_SIZE   = 16384;

static const char H2C_CLIENT_PREFACE[] = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n";
static constexpr size_t H2C_CLIENT_PREFACE_LEN = 24;

static std::string h2cBuildFrame(uint8_t type, uint8_t flags, uint32_t stream_id,
                                 const std::string &payload);
static std::string h2cBuildSettings();
static std::string h2cBuildSettingsAck();
static std::string h2cBuildWindowUpdate(uint32_t stream_id, uint32_t increment);

// ── Streaming API ──────────────────────────────────────────────────────

bool libhttppp::HttpClient::isStreaming() const {