|
Network System 0.1.1
High-performance modular networking library for scalable client-server applications
|
Parser for QUIC frames (RFC 9000 Section 12) More...
#include <frame.h>

Static Public Member Functions | |
| static auto | parse (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| Parse a single frame from buffer. | |
| static auto | parse_all (std::span< const uint8_t > data) -> Result< std::vector< frame > > |
| Parse all frames from buffer. | |
| static auto | peek_type (std::span< const uint8_t > data) -> Result< std::pair< uint64_t, size_t > > |
| Get the frame type from raw data without full parsing. | |
Static Private Member Functions | |
| static auto | parse_padding (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_ping (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_ack (std::span< const uint8_t > data, bool has_ecn) -> Result< std::pair< frame, size_t > > |
| static auto | parse_reset_stream (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_stop_sending (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_crypto (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_new_token (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_stream (std::span< const uint8_t > data, uint8_t flags) -> Result< std::pair< frame, size_t > > |
| static auto | parse_max_data (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_max_stream_data (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_max_streams (std::span< const uint8_t > data, bool bidi) -> Result< std::pair< frame, size_t > > |
| static auto | parse_data_blocked (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_stream_data_blocked (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_streams_blocked (std::span< const uint8_t > data, bool bidi) -> Result< std::pair< frame, size_t > > |
| static auto | parse_new_connection_id (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_retire_connection_id (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_path_challenge (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_path_response (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
| static auto | parse_connection_close (std::span< const uint8_t > data, bool is_app) -> Result< std::pair< frame, size_t > > |
| static auto | parse_handshake_done (std::span< const uint8_t > data) -> Result< std::pair< frame, size_t > > |
Parser for QUIC frames (RFC 9000 Section 12)
Parses raw bytes into QUIC frame structures. Handles all frame types defined in RFC 9000 Section 19.
|
staticnodiscard |
Parse a single frame from buffer.
| data | Input buffer containing frame data |
Definition at line 122 of file frame.cpp.
References kcenon::network::protocols::quic::ack, kcenon::network::protocols::quic::ack_ecn, kcenon::network::protocols::quic::connection_close, kcenon::network::protocols::quic::connection_close_app, kcenon::network::protocols::quic::crypto, kcenon::network::protocols::quic::data_blocked, kcenon::network::protocols::quic::varint::decode(), kcenon::network::protocols::quic::get_stream_flags(), kcenon::network::protocols::quic::handshake_done, kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::is_stream_frame(), kcenon::network::protocols::quic::max_data, kcenon::network::protocols::quic::max_stream_data, kcenon::network::protocols::quic::max_streams_bidi, kcenon::network::protocols::quic::max_streams_uni, kcenon::network::protocols::quic::new_connection_id, kcenon::network::protocols::quic::new_token, kcenon::network::ok(), kcenon::network::protocols::quic::padding, kcenon::network::protocols::quic::path_challenge, kcenon::network::protocols::quic::path_response, kcenon::network::protocols::quic::ping, kcenon::network::protocols::quic::reset_stream, kcenon::network::protocols::quic::retire_connection_id, kcenon::network::protocols::quic::stop_sending, kcenon::network::protocols::quic::stream_data_blocked, kcenon::network::protocols::quic::streams_blocked_bidi, and kcenon::network::protocols::quic::streams_blocked_uni.

|
staticnodiscardprivate |
Definition at line 394 of file frame.cpp.
References kcenon::network::protocols::quic::ack_frame::ack_delay, kcenon::network::protocols::quic::varint::decode(), kcenon::network::protocols::quic::ack_frame::ecn, kcenon::network::protocols::quic::ecn_counts::ecn_ce, kcenon::network::protocols::quic::ecn_ce, kcenon::network::protocols::quic::ecn_counts::ect0, kcenon::network::protocols::quic::ect0, kcenon::network::protocols::quic::ecn_counts::ect1, kcenon::network::protocols::quic::ect1, kcenon::network::protocols::quic::ack_range::gap, kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::ack_frame::largest_acknowledged, kcenon::network::protocols::quic::ack_range::length, kcenon::network::ok(), and kcenon::network::protocols::quic::ack_frame::ranges.

|
staticnodiscard |
Parse all frames from buffer.
| data | Input buffer containing one or more frames |
Definition at line 343 of file frame.cpp.
References kcenon::network::error_codes::common_errors::invalid_argument, and kcenon::network::ok().
Referenced by kcenon::network::internal::quic_socket::handle_packet(), and kcenon::network::protocols::quic::connection::process_frames().


|
staticnodiscardprivate |
Definition at line 825 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode(), kcenon::network::protocols::quic::connection_close_frame::error_code, kcenon::network::protocols::quic::connection_close_frame::frame_type, kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::connection_close_frame::is_application_error, kcenon::network::ok(), and kcenon::network::protocols::quic::connection_close_frame::reason_phrase.

|
staticnodiscardprivate |
Definition at line 524 of file frame.cpp.
References kcenon::network::protocols::quic::crypto_frame::data, kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::crypto_frame::offset, and kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 679 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::max_data, kcenon::network::protocols::quic::data_blocked_frame::maximum_data, and kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 869 of file frame.cpp.
References kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 631 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::max_data, kcenon::network::protocols::quic::max_data_frame::maximum_data, and kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 644 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::max_data, kcenon::network::protocols::quic::max_stream_data_frame::maximum_stream_data, kcenon::network::ok(), and kcenon::network::protocols::quic::max_stream_data_frame::stream_id.

|
staticnodiscardprivate |
Definition at line 665 of file frame.cpp.
References kcenon::network::protocols::quic::max_streams_frame::bidirectional, kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::max_streams_frame::maximum_streams, and kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 727 of file frame.cpp.
References kcenon::network::protocols::quic::new_connection_id_frame::connection_id, kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::ok(), kcenon::network::protocols::quic::new_connection_id_frame::retire_prior_to, kcenon::network::protocols::quic::new_connection_id_frame::sequence_number, and kcenon::network::protocols::quic::new_connection_id_frame::stateless_reset_token.

|
staticnodiscardprivate |
Definition at line 553 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::ok(), and kcenon::network::protocols::quic::new_token_frame::token.

|
staticnodiscardprivate |
Definition at line 367 of file frame.cpp.
References kcenon::network::protocols::quic::padding_frame::count, and kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 795 of file frame.cpp.
References kcenon::network::protocols::quic::path_challenge_frame::data, kcenon::network::error_codes::common_errors::invalid_argument, and kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 810 of file frame.cpp.
References kcenon::network::protocols::quic::path_response_frame::data, kcenon::network::error_codes::common_errors::invalid_argument, and kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 387 of file frame.cpp.
References kcenon::network::ok().

|
staticnodiscardprivate |
Definition at line 476 of file frame.cpp.
References kcenon::network::protocols::quic::reset_stream_frame::application_error_code, kcenon::network::protocols::quic::varint::decode(), kcenon::network::protocols::quic::reset_stream_frame::final_size, kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::ok(), and kcenon::network::protocols::quic::reset_stream_frame::stream_id.

|
staticnodiscardprivate |
Definition at line 782 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::ok(), and kcenon::network::protocols::quic::retire_connection_id_frame::sequence_number.

|
staticnodiscardprivate |
Definition at line 503 of file frame.cpp.
References kcenon::network::protocols::quic::stop_sending_frame::application_error_code, kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::ok(), and kcenon::network::protocols::quic::stop_sending_frame::stream_id.

|
staticnodiscardprivate |
Definition at line 576 of file frame.cpp.
References kcenon::network::protocols::quic::stream_frame::data, kcenon::network::protocols::quic::varint::decode(), kcenon::network::protocols::quic::stream_flags::fin, kcenon::network::protocols::quic::stream_frame::fin, kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::stream_flags::len, kcenon::network::protocols::quic::stream_flags::off, kcenon::network::protocols::quic::stream_frame::offset, kcenon::network::ok(), and kcenon::network::protocols::quic::stream_frame::stream_id.

|
staticnodiscardprivate |
Definition at line 692 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::max_data, kcenon::network::protocols::quic::stream_data_blocked_frame::maximum_stream_data, kcenon::network::ok(), and kcenon::network::protocols::quic::stream_data_blocked_frame::stream_id.

|
staticnodiscardprivate |
Definition at line 713 of file frame.cpp.
References kcenon::network::protocols::quic::streams_blocked_frame::bidirectional, kcenon::network::protocols::quic::varint::decode(), kcenon::network::error_codes::common_errors::invalid_argument, kcenon::network::protocols::quic::streams_blocked_frame::maximum_streams, and kcenon::network::ok().

|
staticnodiscard |
Get the frame type from raw data without full parsing.
| data | Input buffer |
Definition at line 116 of file frame.cpp.
References kcenon::network::protocols::quic::varint::decode().
