Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
frame_types.h File Reference
#include <array>
#include <cstdint>
#include <optional>
#include <string>
#include <tuple>
#include <variant>
#include <vector>
Include dependency graph for frame_types.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  kcenon::network::protocols::quic::padding_frame
 PADDING frame (RFC 9000 Section 19.1) More...
 
struct  kcenon::network::protocols::quic::ping_frame
 PING frame (RFC 9000 Section 19.2) More...
 
struct  kcenon::network::protocols::quic::ack_range
 ACK Range for ACK frames. More...
 
struct  kcenon::network::protocols::quic::ecn_counts
 ECN counts for ACK_ECN frames. More...
 
struct  kcenon::network::protocols::quic::ack_frame
 ACK frame (RFC 9000 Section 19.3) More...
 
struct  kcenon::network::protocols::quic::reset_stream_frame
 RESET_STREAM frame (RFC 9000 Section 19.4) More...
 
struct  kcenon::network::protocols::quic::stop_sending_frame
 STOP_SENDING frame (RFC 9000 Section 19.5) More...
 
struct  kcenon::network::protocols::quic::crypto_frame
 CRYPTO frame (RFC 9000 Section 19.6) More...
 
struct  kcenon::network::protocols::quic::new_token_frame
 NEW_TOKEN frame (RFC 9000 Section 19.7) More...
 
struct  kcenon::network::protocols::quic::stream_frame
 STREAM frame (RFC 9000 Section 19.8) More...
 
struct  kcenon::network::protocols::quic::max_data_frame
 MAX_DATA frame (RFC 9000 Section 19.9) More...
 
struct  kcenon::network::protocols::quic::max_stream_data_frame
 MAX_STREAM_DATA frame (RFC 9000 Section 19.10) More...
 
struct  kcenon::network::protocols::quic::max_streams_frame
 MAX_STREAMS frame (RFC 9000 Section 19.11) More...
 
struct  kcenon::network::protocols::quic::data_blocked_frame
 DATA_BLOCKED frame (RFC 9000 Section 19.12) More...
 
struct  kcenon::network::protocols::quic::stream_data_blocked_frame
 STREAM_DATA_BLOCKED frame (RFC 9000 Section 19.13) More...
 
struct  kcenon::network::protocols::quic::streams_blocked_frame
 STREAMS_BLOCKED frame (RFC 9000 Section 19.14) More...
 
struct  kcenon::network::protocols::quic::new_connection_id_frame
 NEW_CONNECTION_ID frame (RFC 9000 Section 19.15) More...
 
struct  kcenon::network::protocols::quic::retire_connection_id_frame
 RETIRE_CONNECTION_ID frame (RFC 9000 Section 19.16) More...
 
struct  kcenon::network::protocols::quic::path_challenge_frame
 PATH_CHALLENGE frame (RFC 9000 Section 19.17) More...
 
struct  kcenon::network::protocols::quic::path_response_frame
 PATH_RESPONSE frame (RFC 9000 Section 19.18) More...
 
struct  kcenon::network::protocols::quic::connection_close_frame
 CONNECTION_CLOSE frame (RFC 9000 Section 19.19) More...
 
struct  kcenon::network::protocols::quic::handshake_done_frame
 HANDSHAKE_DONE frame (RFC 9000 Section 19.20) More...
 

Namespaces

namespace  kcenon
 
namespace  kcenon::network
 Main namespace for all Network System components.
 
namespace  kcenon::network::protocols
 
namespace  kcenon::network::protocols::quic
 
namespace  kcenon::network::protocols::quic::stream_flags
 STREAM frame type flags (bits 0-2 of type byte)
 

Typedefs

using kcenon::network::protocols::quic::frame
 Variant type holding any QUIC frame.
 

Enumerations

enum class  kcenon::network::protocols::quic::frame_type : uint64_t {
  kcenon::network::protocols::quic::padding = 0x00 , kcenon::network::protocols::quic::ping = 0x01 , kcenon::network::protocols::quic::ack = 0x02 , kcenon::network::protocols::quic::ack_ecn = 0x03 ,
  kcenon::network::protocols::quic::reset_stream = 0x04 , kcenon::network::protocols::quic::stop_sending = 0x05 , kcenon::network::protocols::quic::crypto = 0x06 , kcenon::network::protocols::quic::new_token = 0x07 ,
  kcenon::network::protocols::quic::stream_base = 0x08 , kcenon::network::protocols::quic::max_data = 0x10 , kcenon::network::protocols::quic::max_stream_data = 0x11 , kcenon::network::protocols::quic::max_streams_bidi = 0x12 ,
  kcenon::network::protocols::quic::max_streams_uni = 0x13 , kcenon::network::protocols::quic::data_blocked = 0x14 , kcenon::network::protocols::quic::stream_data_blocked = 0x15 , kcenon::network::protocols::quic::streams_blocked_bidi = 0x16 ,
  kcenon::network::protocols::quic::streams_blocked_uni = 0x17 , kcenon::network::protocols::quic::new_connection_id = 0x18 , kcenon::network::protocols::quic::retire_connection_id = 0x19 , kcenon::network::protocols::quic::path_challenge = 0x1a ,
  kcenon::network::protocols::quic::path_response = 0x1b , kcenon::network::protocols::quic::connection_close = 0x1c , kcenon::network::protocols::quic::connection_close_app = 0x1d , kcenon::network::protocols::quic::handshake_done = 0x1e
}
 QUIC frame types as defined in RFC 9000 Section 12.4. More...
 

Functions

constexpr auto kcenon::network::protocols::quic::is_stream_frame (uint64_t type) noexcept -> bool
 Check if a frame type value represents a STREAM frame.
 
constexpr auto kcenon::network::protocols::quic::get_stream_flags (uint64_t type) noexcept -> uint8_t
 Extract STREAM flags from frame type.
 
constexpr auto kcenon::network::protocols::quic::make_stream_type (bool has_fin, bool has_length, bool has_offset) noexcept -> uint8_t
 Build STREAM frame type from flags.
 
auto kcenon::network::protocols::quic::get_frame_type (const frame &f) -> frame_type
 Get the frame type for a frame variant.
 
auto kcenon::network::protocols::quic::frame_type_to_string (frame_type type) -> std::string
 Get string name for a frame type.
 

Variables

constexpr uint8_t kcenon::network::protocols::quic::stream_flags::fin = 0x01
 Stream is finished.
 
constexpr uint8_t kcenon::network::protocols::quic::stream_flags::len = 0x02
 Length field present.
 
constexpr uint8_t kcenon::network::protocols::quic::stream_flags::off = 0x04
 Offset field present.
 
constexpr uint8_t kcenon::network::protocols::quic::stream_flags::mask = 0x07
 Mask for all flags.
 
constexpr uint8_t kcenon::network::protocols::quic::stream_flags::base = 0x08
 Base type for STREAM frames.