Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
kcenon::network::protocols::http2::http2_stream Struct Reference

HTTP/2 stream state and data. More...

#include <http2_client.h>

Collaboration diagram for kcenon::network::protocols::http2::http2_stream:
Collaboration graph

Public Member Functions

 http2_stream ()=default
 
 http2_stream (http2_stream &&other) noexcept
 
auto operator= (http2_stream &&other) noexcept -> http2_stream &
 

Public Attributes

uint32_t stream_id = 0
 Stream identifier.
 
std::atomic< stream_state > state {stream_state::idle}
 Current state.
 
std::vector< http_header > request_headers
 Request headers.
 
std::vector< http_header > response_headers
 Response headers.
 
std::vector< uint8_t > request_body
 Request body.
 
std::vector< uint8_t > response_body
 Response body.
 
int32_t window_size = 65535
 Flow control window.
 
std::promise< http2_response > promise
 Response promise.
 
bool headers_complete = false
 Headers fully received.
 
bool body_complete = false
 Body fully received.
 
bool is_streaming = false
 Streaming support.
 
std::function< void(std::vector< uint8_t >)> on_data
 Callback for streaming data.
 
std::function< void(std::vector< http_header >)> on_headers
 Callback for headers.
 
std::function< void(int)> on_complete
 Callback when stream ends (status code)
 

Detailed Description

HTTP/2 stream state and data.

Definition at line 78 of file http2_client.h.

Constructor & Destructor Documentation

◆ http2_stream() [1/2]

kcenon::network::protocols::http2::http2_stream::http2_stream ( )
default

◆ http2_stream() [2/2]

kcenon::network::protocols::http2::http2_stream::http2_stream ( http2_stream && other)
inlinenoexcept

Definition at line 98 of file http2_client.h.

98{ *this = std::move(other); }

Member Function Documentation

◆ operator=()

auto kcenon::network::protocols::http2::http2_stream::operator= ( http2_stream && other) -> http2_stream&
inlinenoexcept

Definition at line 99 of file http2_client.h.

100 {
101 if (this == &other) return *this;
102 stream_id = other.stream_id;
103 state.store(other.state.load());
104 request_headers = std::move(other.request_headers);
105 response_headers = std::move(other.response_headers);
106 request_body = std::move(other.request_body);
107 response_body = std::move(other.response_body);
108 window_size = other.window_size;
109 promise = std::move(other.promise);
110 headers_complete = other.headers_complete;
111 body_complete = other.body_complete;
112 is_streaming = other.is_streaming;
113 on_data = std::move(other.on_data);
114 on_headers = std::move(other.on_headers);
115 on_complete = std::move(other.on_complete);
116 return *this;
117 }
std::vector< uint8_t > request_body
Request body.
std::atomic< stream_state > state
Current state.
std::vector< http_header > response_headers
Response headers.
std::promise< http2_response > promise
Response promise.
std::vector< http_header > request_headers
Request headers.
std::function< void(std::vector< uint8_t >)> on_data
Callback for streaming data.
std::function< void(std::vector< http_header >)> on_headers
Callback for headers.
std::function< void(int)> on_complete
Callback when stream ends (status code)
bool headers_complete
Headers fully received.
std::vector< uint8_t > response_body
Response body.

Member Data Documentation

◆ body_complete

bool kcenon::network::protocols::http2::http2_stream::body_complete = false

Body fully received.

Definition at line 89 of file http2_client.h.

◆ headers_complete

bool kcenon::network::protocols::http2::http2_stream::headers_complete = false

Headers fully received.

Definition at line 88 of file http2_client.h.

◆ is_streaming

bool kcenon::network::protocols::http2::http2_stream::is_streaming = false

Streaming support.

Whether this is a streaming request

Definition at line 92 of file http2_client.h.

Referenced by kcenon::network::protocols::http2::http2_client::start_stream().

◆ on_complete

std::function<void(int)> kcenon::network::protocols::http2::http2_stream::on_complete

Callback when stream ends (status code)

Definition at line 95 of file http2_client.h.

Referenced by kcenon::network::protocols::http2::http2_client::start_stream().

◆ on_data

std::function<void(std::vector<uint8_t>)> kcenon::network::protocols::http2::http2_stream::on_data

Callback for streaming data.

Definition at line 93 of file http2_client.h.

Referenced by kcenon::network::protocols::http2::http2_client::start_stream().

◆ on_headers

std::function<void(std::vector<http_header>)> kcenon::network::protocols::http2::http2_stream::on_headers

Callback for headers.

Definition at line 94 of file http2_client.h.

Referenced by kcenon::network::protocols::http2::http2_client::start_stream().

◆ promise

std::promise<http2_response> kcenon::network::protocols::http2::http2_stream::promise

Response promise.

Definition at line 87 of file http2_client.h.

Referenced by kcenon::network::protocols::http2::http2_client::send_request().

◆ request_body

std::vector<uint8_t> kcenon::network::protocols::http2::http2_stream::request_body

◆ request_headers

◆ response_body

std::vector<uint8_t> kcenon::network::protocols::http2::http2_stream::response_body

Response body.

Definition at line 85 of file http2_client.h.

◆ response_headers

std::vector<http_header> kcenon::network::protocols::http2::http2_stream::response_headers

Response headers.

Definition at line 83 of file http2_client.h.

◆ state

◆ stream_id

◆ window_size

int32_t kcenon::network::protocols::http2::http2_stream::window_size = 65535

Flow control window.

Definition at line 86 of file http2_client.h.

Referenced by kcenon::network::protocols::http2::http2_server_connection::get_or_create_stream().


The documentation for this struct was generated from the following file: