23 class http2_connection;
66 std::shared_ptr<hpack_encoder> encoder,
92 const std::vector<http_header>&
headers,
158 [[nodiscard]]
auto stream_id() const -> uint32_t;
164 [[nodiscard]] auto
method() const -> std::string_view;
170 [[nodiscard]] auto
path() const -> std::string_view;
188 [[nodiscard]] auto
is_open() const ->
bool;
Base class for HTTP/2 frames.
HPACK header encoder (RFC 7541)
Server-side HTTP/2 stream for sending responses.
std::shared_ptr< hpack_encoder > encoder_
HPACK encoder.
auto headers_sent() const -> bool
Check if headers have been sent.
auto state() const -> stream_state
Get current stream state.
http2_server_stream(const http2_server_stream &)=delete
stream_state state_
Current stream state.
std::function< VoidResult(const frame &)> frame_sender_t
Function type for sending frames.
auto method() const -> std::string_view
Get request method.
auto send_headers(int status_code, const std::vector< http_header > &headers, bool end_stream=false) -> VoidResult
Send response headers.
auto is_open() const -> bool
Check if stream is open for sending.
uint32_t max_frame_size_
Maximum frame payload size.
auto start_response(int status_code, const std::vector< http_header > &headers) -> VoidResult
Start a streaming response.
bool headers_sent_
Headers have been sent.
uint32_t stream_id_
Stream identifier.
auto path() const -> std::string_view
Get request path.
frame_sender_t frame_sender_
Frame sender function.
http2_server_stream & operator=(const http2_server_stream &)=delete
http2_server_stream(http2_server_stream &&)=delete
auto reset(uint32_t err_code=static_cast< uint32_t >(error_code::cancel)) -> VoidResult
Reset the stream with an error code.
auto build_response_headers(int status_code, const std::vector< http_header > &additional) -> std::vector< http_header >
Build response headers with :status pseudo-header.
auto send_data(const std::vector< uint8_t > &data, bool end_stream=false) -> VoidResult
Send response data.
auto end_response() -> VoidResult
End the streaming response.
auto headers() const -> const std::vector< http_header > &
Get request headers.
~http2_server_stream()=default
Destructor.
http2_server_stream(uint32_t stream_id, http2_request request, std::shared_ptr< hpack_encoder > encoder, frame_sender_t frame_sender, uint32_t max_frame_size=16384)
Construct server stream.
auto request() const -> const http2_request &
Get the full request.
std::mutex mutex_
State protection mutex.
http2_server_stream & operator=(http2_server_stream &&)=delete
int32_t window_size_
Flow control window.
auto stream_id() const -> uint32_t
Get stream identifier.
auto write(const std::vector< uint8_t > &chunk) -> VoidResult
Write data chunk for streaming response.
auto update_window(int32_t increment) -> void
Update flow control window.
http2_request request_
Original request.
auto window_size() const -> int32_t
Get available window size.
@ cancel
Stream cancelled.
@ max_frame_size
SETTINGS_MAX_FRAME_SIZE.
stream_state
HTTP/2 stream state (RFC 7540 Section 5.1)
@ open
Stream open and active.
Result< std::monostate > VoidResult
Network-specific error and result type definitions.
HTTP/2 request data structure.