3#include <nghttp3/nghttp3.h>
6#include <unordered_map>
48 nghttp3_conn*
get_conn()
const {
return httpconn_; }
68 nghttp3_conn* httpconn_{
nullptr};
69 std::unordered_map<int64_t, std::shared_ptr<Http3Stream>> streams_;
72 static int on_acked_stream_data(nghttp3_conn *conn, int64_t stream_id, uint64_t datalen,
void *conn_user_data,
void *stream_user_data);
73 static int on_stream_close(nghttp3_conn *conn, int64_t stream_id, uint64_t app_error_code,
void *conn_user_data,
void *stream_user_data);
74 static int on_recv_data(nghttp3_conn *conn, int64_t stream_id,
const uint8_t *data,
size_t datalen,
void *conn_user_data,
void *stream_user_data);
75 static int on_deferred_consume(nghttp3_conn *conn, int64_t stream_id,
size_t consumed,
void *conn_user_data,
void *stream_user_data);
76 static int on_begin_headers(nghttp3_conn *conn, int64_t stream_id,
void *conn_user_data,
void *stream_user_data);
77 static int on_recv_header(nghttp3_conn *conn, int64_t stream_id, int32_t token, nghttp3_rcbuf *name, nghttp3_rcbuf *value, uint8_t flags,
void *conn_user_data,
void *stream_user_data);
78 static int on_end_headers(nghttp3_conn *conn, int64_t stream_id,
int fin,
void *conn_user_data,
void *stream_user_data);
80 std::shared_ptr<Http3Stream> get_or_create_stream(int64_t stream_id);
81 void handle_request(std::shared_ptr<Http3Stream> stream);
Represents a single QUIC connection.
Definition QuicConnection.hpp:29
Manages an HTTP/3 session over a QUIC connection.
Definition QuicHttp3Session.hpp:29
bool init()
Initializes the HTTP/3 session.
Definition QuicHttp3Session.cpp:24
int write_streams()
Serializes HTTP/3 frames and feeds them to ngtcp2.
Definition QuicHttp3Session.cpp:61
~QuicHttp3Session()
Definition QuicHttp3Session.cpp:18
int process_stream_data(int64_t stream_id, const uint8_t *data, size_t datalen, bool fin)
Processes received QUIC stream data for HTTP/3.
Definition QuicHttp3Session.cpp:50
nghttp3_conn * get_conn() const
Gets the underlying nghttp3 connection.
Definition QuicHttp3Session.hpp:48
Definition Http2Session.hpp:17
Represents an incoming HTTP request.
Definition HttpRequest.hpp:22
Definition QuicHttp3Session.hpp:15
std::string body_buffer
Definition QuicHttp3Session.hpp:18
std::vector< std::string > header_storage
Definition QuicHttp3Session.hpp:19
http::HttpRequest request
Definition QuicHttp3Session.hpp:17
Http3Stream(int64_t id)
Definition QuicHttp3Session.hpp:23
bool headers_complete
Definition QuicHttp3Session.hpp:20
std::string response_body
Definition QuicHttp3Session.hpp:21
int64_t stream_id
Definition QuicHttp3Session.hpp:16