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

Namespaces

namespace  frame_flags
 
namespace  huffman
 

Classes

class  data_frame
 DATA frame (RFC 7540 Section 6.1) More...
 
class  dynamic_table
 HPACK dynamic table for header compression. More...
 
class  frame
 Base class for HTTP/2 frames. More...
 
struct  frame_header
 HTTP/2 frame header (9 bytes) More...
 
class  goaway_frame
 GOAWAY frame (RFC 7540 Section 6.8) More...
 
class  headers_frame
 HEADERS frame (RFC 7540 Section 6.2) More...
 
class  hpack_decoder
 HPACK header decoder (RFC 7541) More...
 
class  hpack_encoder
 HPACK header encoder (RFC 7541) More...
 
class  http2_client
 HTTP/2 client with TLS support. More...
 
struct  http2_request
 HTTP/2 request data structure. More...
 
struct  http2_response
 HTTP/2 response data. More...
 
class  http2_server
 HTTP/2 server with TLS support. More...
 
class  http2_server_connection
 Represents a single HTTP/2 connection on the server side. More...
 
class  http2_server_stream
 Server-side HTTP/2 stream for sending responses. More...
 
struct  http2_settings
 HTTP/2 connection settings. More...
 
struct  http2_stream
 HTTP/2 stream state and data. More...
 
struct  http_header
 HTTP header name-value pair. More...
 
class  ping_frame
 PING frame (RFC 7540 Section 6.7) More...
 
class  rst_stream_frame
 RST_STREAM frame (RFC 7540 Section 6.4) More...
 
struct  setting_parameter
 SETTINGS frame parameter. More...
 
class  settings_frame
 SETTINGS frame (RFC 7540 Section 6.5) More...
 
class  static_table
 HPACK static table (RFC 7541 Appendix A) More...
 
struct  tls_config
 TLS configuration for HTTP/2 server. More...
 
class  window_update_frame
 WINDOW_UPDATE frame (RFC 7540 Section 6.9) More...
 

Enumerations

enum class  frame_type : uint8_t {
  data = 0x0 , headers = 0x1 , priority = 0x2 , rst_stream = 0x3 ,
  settings = 0x4 , push_promise = 0x5 , ping = 0x6 , goaway = 0x7 ,
  window_update = 0x8 , continuation = 0x9
}
 HTTP/2 frame types (RFC 7540 Section 6) More...
 
enum class  setting_identifier : uint16_t {
  header_table_size = 0x1 , enable_push = 0x2 , max_concurrent_streams = 0x3 , initial_window_size = 0x4 ,
  max_frame_size = 0x5 , max_header_list_size = 0x6
}
 SETTINGS frame parameter identifiers (RFC 7540 Section 6.5.2) More...
 
enum class  error_code : uint32_t {
  no_error = 0x0 , protocol_error = 0x1 , internal_error = 0x2 , flow_control_error = 0x3 ,
  settings_timeout = 0x4 , stream_closed = 0x5 , frame_size_error = 0x6 , refused_stream = 0x7 ,
  cancel = 0x8 , compression_error = 0x9 , connect_error = 0xa , enhance_your_calm = 0xb ,
  inadequate_security = 0xc , http_1_1_required = 0xd
}
 HTTP/2 error codes (RFC 7540 Section 7) More...
 
enum class  stream_state {
  idle , open , half_closed_local , half_closed_remote ,
  closed
}
 HTTP/2 stream state (RFC 7540 Section 5.1) More...
 

Enumeration Type Documentation

◆ error_code

enum class kcenon::network::protocols::http2::error_code : uint32_t
strong

HTTP/2 error codes (RFC 7540 Section 7)

Enumerator
no_error 

Graceful shutdown.

protocol_error 

Protocol error detected.

internal_error 

Implementation fault.

flow_control_error 

Flow-control limits exceeded.

settings_timeout 

Settings not acknowledged.

stream_closed 

Frame received for closed stream.

frame_size_error 

Frame size incorrect.

refused_stream 

Stream not processed.

cancel 

Stream cancelled.

compression_error 

Compression state not updated.

connect_error 

TCP connection error for CONNECT.

enhance_your_calm 

Processing capacity exceeded.

inadequate_security 

Negotiated TLS parameters not acceptable.

http_1_1_required 

Use HTTP/1.1 for the request.

Definition at line 470 of file frame.h.

471 {
472 no_error = 0x0,
473 protocol_error = 0x1,
474 internal_error = 0x2,
475 flow_control_error = 0x3,
476 settings_timeout = 0x4,
477 stream_closed = 0x5,
478 frame_size_error = 0x6,
479 refused_stream = 0x7,
480 cancel = 0x8,
481 compression_error = 0x9,
482 connect_error = 0xa,
483 enhance_your_calm = 0xb,
484 inadequate_security = 0xc,
485 http_1_1_required = 0xd
486 };
@ compression_error
Compression state not updated.
@ settings_timeout
Settings not acknowledged.
@ connect_error
TCP connection error for CONNECT.
@ inadequate_security
Negotiated TLS parameters not acceptable.
@ stream_closed
Frame received for closed stream.
@ enhance_your_calm
Processing capacity exceeded.
@ http_1_1_required
Use HTTP/1.1 for the request.

◆ frame_type

enum class kcenon::network::protocols::http2::frame_type : uint8_t
strong

HTTP/2 frame types (RFC 7540 Section 6)

Enumerator
data 

DATA frame.

headers 

HEADERS frame.

priority 

PRIORITY frame.

rst_stream 

RST_STREAM frame.

settings 

SETTINGS frame.

push_promise 

PUSH_PROMISE frame.

ping 

PING frame.

goaway 

GOAWAY frame.

window_update 

WINDOW_UPDATE frame.

continuation 

CONTINUATION frame.

Definition at line 21 of file frame.h.

◆ setting_identifier

SETTINGS frame parameter identifiers (RFC 7540 Section 6.5.2)

Enumerator
header_table_size 

SETTINGS_HEADER_TABLE_SIZE.

enable_push 

SETTINGS_ENABLE_PUSH.

max_concurrent_streams 

SETTINGS_MAX_CONCURRENT_STREAMS.

initial_window_size 

SETTINGS_INITIAL_WINDOW_SIZE.

max_frame_size 

SETTINGS_MAX_FRAME_SIZE.

max_header_list_size 

SETTINGS_MAX_HEADER_LIST_SIZE.

Definition at line 247 of file frame.h.

248 {
249 header_table_size = 0x1,
250 enable_push = 0x2,
252 initial_window_size = 0x4,
253 max_frame_size = 0x5,
255 };
@ max_header_list_size
SETTINGS_MAX_HEADER_LIST_SIZE.
@ max_concurrent_streams
SETTINGS_MAX_CONCURRENT_STREAMS.
@ initial_window_size
SETTINGS_INITIAL_WINDOW_SIZE.

◆ stream_state

HTTP/2 stream state (RFC 7540 Section 5.1)

Enumerator
idle 

Stream not yet opened.

open 

Stream open and active.

half_closed_local 

Local end closed, remote can send.

half_closed_remote 

Remote end closed, local can send.

closed 

Stream fully closed.

Definition at line 33 of file http2_client.h.

34 {
35 idle,
36 open,
39 closed
40 };
@ half_closed_remote
Remote end closed, local can send.
@ half_closed_local
Local end closed, remote can send.