|
Network System 0.1.1
High-performance modular networking library for scalable client-server applications
|
QUIC connection state machine (RFC 9000 Section 5) More...
#include <connection.h>

Public Member Functions | |
| connection (bool is_server, const connection_id &initial_dcid) | |
| Construct a connection. | |
| ~connection () | |
| connection (const connection &)=delete | |
| auto | operator= (const connection &) -> connection &=delete |
| connection (connection &&)=delete | |
| auto | operator= (connection &&) -> connection &=delete |
| auto | state () const noexcept -> connection_state |
| Get current connection state. | |
| auto | handshake_state () const noexcept -> enum handshake_state |
| Get current handshake state. | |
| auto | is_established () const noexcept -> bool |
| Check if connection is established (handshake complete) | |
| auto | is_draining () const noexcept -> bool |
| Check if connection is draining or closing. | |
| auto | is_closed () const noexcept -> bool |
| Check if connection is closed. | |
| auto | is_server () const noexcept -> bool |
| Check if this is a server-side connection. | |
| auto | local_cid () const -> const connection_id & |
| Get local Connection ID. | |
| auto | remote_cid () const -> const connection_id & |
| Get remote Connection ID. | |
| auto | initial_dcid () const -> const connection_id & |
| Get initial Destination Connection ID (for key derivation) | |
| auto | add_local_cid (const connection_id &cid, uint64_t sequence) -> VoidResult |
| Add a new local Connection ID. | |
| auto | retire_cid (uint64_t sequence) -> VoidResult |
| Retire a Connection ID. | |
| auto | peer_cid_manager () -> connection_id_manager & |
| Get the peer connection ID manager. | |
| auto | peer_cid_manager () const -> const connection_id_manager & |
| Get the peer connection ID manager (const) | |
| auto | active_peer_cid () const -> const connection_id & |
| Get the currently active peer connection ID. | |
| auto | rotate_peer_cid () -> VoidResult |
| Rotate to a new peer connection ID. | |
| void | set_local_params (const transport_parameters ¶ms) |
| Set local transport parameters. | |
| void | set_remote_params (const transport_parameters ¶ms) |
| Set remote transport parameters. | |
| auto | local_params () const -> const transport_parameters & |
| Get local transport parameters. | |
| auto | remote_params () const -> const transport_parameters & |
| Get remote transport parameters. | |
| auto | start_handshake (const std::string &server_name) -> Result< std::vector< uint8_t > > |
| Start the handshake (client only) | |
| auto | init_server_handshake (const std::string &cert_file, const std::string &key_file) -> VoidResult |
| Initialize server handshake. | |
| auto | receive_packet (std::span< const uint8_t > data) -> VoidResult |
| Receive and process a packet. | |
| auto | generate_packets () -> std::vector< std::vector< uint8_t > > |
| Generate packets to send. | |
| auto | has_pending_data () const -> bool |
| Check if there are packets to send. | |
| auto | streams () -> stream_manager & |
| Get the stream manager. | |
| auto | streams () const -> const stream_manager & |
| Get the stream manager (const) | |
| auto | flow_control () -> flow_controller & |
| Get the connection-level flow controller. | |
| auto | flow_control () const -> const flow_controller & |
| Get the connection-level flow controller (const) | |
| auto | close (uint64_t error_code, const std::string &reason="") -> VoidResult |
| Close the connection. | |
| auto | close_application (uint64_t error_code, const std::string &reason="") -> VoidResult |
| Close connection due to application error. | |
| auto | close_error_code () const -> std::optional< uint64_t > |
| Get the close error code (if connection was closed) | |
| auto | close_reason () const -> const std::string & |
| Get the close reason (if connection was closed) | |
| auto | next_timeout () const -> std::optional< std::chrono::steady_clock::time_point > |
| Get the next timeout deadline. | |
| void | on_timeout () |
| Handle timeout event. | |
| auto | idle_deadline () const -> std::chrono::steady_clock::time_point |
| Get idle timeout deadline. | |
| auto | crypto () -> quic_crypto & |
| Get crypto handler. | |
| auto | crypto () const -> const quic_crypto & |
| Get crypto handler (const) | |
| auto | path_mtu () const noexcept -> size_t |
| Get current path MTU. | |
| void | enable_pmtud () |
| Enable Path MTU Discovery. | |
| void | disable_pmtud () |
| Disable Path MTU Discovery. | |
| auto | pmtud_enabled () const noexcept -> bool |
| Check if PMTUD is enabled. | |
| auto | pmtud () -> pmtud_controller & |
| Get the PMTUD controller. | |
| auto | pmtud () const -> const pmtud_controller & |
| Get the PMTUD controller (const) | |
| auto | bytes_sent () const noexcept -> uint64_t |
| Get total bytes sent. | |
| auto | bytes_received () const noexcept -> uint64_t |
| Get total bytes received. | |
| auto | packets_sent () const noexcept -> uint64_t |
| Get packets sent count. | |
| auto | packets_received () const noexcept -> uint64_t |
| Get packets received count. | |
Private Member Functions | |
| auto | process_long_header_packet (const long_header &hdr, std::span< const uint8_t > payload) -> VoidResult |
| Process a long header packet. | |
| auto | process_short_header_packet (const short_header &hdr, std::span< const uint8_t > payload) -> VoidResult |
| Process a short header packet. | |
| auto | process_frames (std::span< const uint8_t > payload, encryption_level level) -> VoidResult |
| Process frames from a decrypted packet. | |
| auto | handle_frame (const frame &frame, encryption_level level) -> VoidResult |
| Handle a specific frame. | |
| auto | build_packet (encryption_level level) -> std::vector< uint8_t > |
| Build a packet at the given encryption level. | |
| auto | get_pn_space (encryption_level level) -> packet_number_space & |
| Get packet number space for an encryption level. | |
| auto | get_pn_space (encryption_level level) const -> const packet_number_space & |
| void | update_state () |
| Update connection state based on handshake progress. | |
| void | reset_idle_timer () |
| Reset idle timer. | |
| void | enter_draining () |
| Transition to draining state. | |
| void | enter_closing () |
| Transition to closing state. | |
| void | apply_remote_params () |
| Apply remote transport parameters. | |
| auto | generate_ack_frame (const packet_number_space &space) -> std::optional< ack_frame > |
| Generate ACK frame for a packet number space. | |
| void | handle_loss_detection_result (const loss_detection_result &result) |
| Handle loss detection result (RFC 9002) | |
| void | generate_probe_packets () |
| Generate probe packets for PTO (RFC 9002 Section 6.2.4) Sends one or two ack-eliciting packets to probe for acknowledgment. | |
| void | queue_frames_for_retransmission (const sent_packet &lost_packet) |
| Queue frames from lost packet for retransmission. | |
| auto | to_sent_packet (const sent_packet_info &info) const -> sent_packet |
| Convert sent_packet_info to sent_packet for loss detector. | |
QUIC connection state machine (RFC 9000 Section 5)
Manages the complete lifecycle of a QUIC connection including:
Definition at line 157 of file connection.h.
| kcenon::network::protocols::quic::connection::connection | ( | bool | is_server, |
| const connection_id & | initial_dcid ) |
Construct a connection.
| is_server | True for server-side, false for client-side |
| initial_dcid | Initial Destination Connection ID |
Definition at line 63 of file connection.cpp.
References kcenon::network::protocols::quic::connection_id::generate(), initial_dcid(), kcenon::network::protocols::quic::transport_parameters::initial_source_connection_id, is_server(), local_cid_, local_cids_, local_params_, kcenon::network::protocols::quic::make_default_client_params(), kcenon::network::protocols::quic::make_default_server_params(), peer_cid_manager_, remote_cid_, reset_idle_timer(), and kcenon::network::protocols::quic::connection_id_manager::set_initial_peer_cid().

|
default |
|
delete |
|
delete |
|
nodiscard |
Get the currently active peer connection ID.
This returns the peer CID that should be used in outgoing packets. It may differ from remote_cid() if CID rotation has occurred.
Definition at line 1540 of file connection.cpp.
References kcenon::network::protocols::quic::connection_id_manager::get_active_peer_cid(), kcenon::network::protocols::quic::connection_id_manager::peer_cid_count(), peer_cid_manager_, and remote_cid_.

|
nodiscard |
Add a new local Connection ID.
| cid | Connection ID to add |
| sequence | Sequence number for this CID |
Definition at line 108 of file connection.cpp.
References kcenon::network::error_void(), kcenon::network::ok(), and kcenon::network::protocols::quic::connection_error::protocol_violation.

|
private |
Apply remote transport parameters.
Definition at line 170 of file connection.cpp.
References kcenon::network::protocols::quic::transport_parameters::active_connection_id_limit, flow_ctrl_, idle_deadline_, kcenon::network::protocols::quic::transport_parameters::initial_max_data, kcenon::network::protocols::quic::transport_parameters::initial_max_streams_bidi, kcenon::network::protocols::quic::transport_parameters::initial_max_streams_uni, local_params_, kcenon::network::protocols::quic::transport_parameters::max_idle_timeout, peer_cid_manager_, remote_params_, kcenon::network::protocols::quic::connection_id_manager::set_active_cid_limit(), kcenon::network::protocols::quic::stream_manager::set_peer_max_streams_bidi(), kcenon::network::protocols::quic::stream_manager::set_peer_max_streams_uni(), stream_mgr_, and kcenon::network::protocols::quic::flow_controller::update_send_limit().
Referenced by set_remote_params().


|
nodiscardprivate |
Build a packet at the given encryption level.
Definition at line 846 of file connection.cpp.
References kcenon::network::protocols::quic::ack, kcenon::network::protocols::quic::sent_packet::ack_eliciting, kcenon::network::protocols::quic::application, kcenon::network::protocols::quic::frame_builder::build(), kcenon::network::protocols::quic::frame_builder::build_ack(), kcenon::network::protocols::quic::frame_builder::build_crypto(), kcenon::network::protocols::quic::packet_builder::build_handshake(), kcenon::network::protocols::quic::packet_builder::build_initial(), kcenon::network::protocols::quic::frame_builder::build_padding(), kcenon::network::protocols::quic::packet_builder::build_short(), kcenon::network::protocols::quic::frame_builder::build_stream(), kcenon::network::protocols::quic::complete, kcenon::network::protocols::quic::connected, kcenon::network::protocols::quic::crypto_frame::data, kcenon::network::protocols::quic::connection_close_frame::error_code, kcenon::network::protocols::quic::handshake, kcenon::network::protocols::quic::sent_packet::in_flight, kcenon::network::protocols::quic::initial, kcenon::network::protocols::quic::connection_close_frame::is_application_error, kcenon::network::protocols::quic::sent_packet::level, kcenon::network::protocols::quic::crypto_frame::offset, kcenon::network::protocols::quic::sent_packet::packet_number, kcenon::network::protocols::quic::packet_protection::protect(), kcenon::network::protocols::quic::connection_close_frame::reason_phrase, kcenon::network::protocols::quic::sent_packet::sent_bytes, and kcenon::network::protocols::quic::sent_packet::sent_time.

|
inlinenodiscardnoexcept |
Get total bytes received.
Definition at line 518 of file connection.h.
References bytes_received_.
|
inlinenodiscardnoexcept |
|
nodiscard |
Close the connection.
| error_code | Error code (0 for normal close) |
| reason | Optional reason phrase |
Definition at line 1137 of file connection.cpp.
References kcenon::network::tracing::trace_context::create_span(), kcenon::network::tracing::is_tracing_enabled(), and kcenon::network::ok().

|
nodiscard |
Close connection due to application error.
| error_code | Application-level error code |
| reason | Optional reason phrase |
Definition at line 1174 of file connection.cpp.
References kcenon::network::tracing::trace_context::create_span(), kcenon::network::tracing::is_tracing_enabled(), and kcenon::network::ok().

|
inlinenodiscard |
Get the close error code (if connection was closed)
Definition at line 417 of file connection.h.
References close_error_code_.
|
inlinenodiscard |
Get the close reason (if connection was closed)
Definition at line 425 of file connection.h.
References close_reason_.
|
inlinenodiscard |
|
inlinenodiscard |
| void kcenon::network::protocols::quic::connection::disable_pmtud | ( | ) |
Disable Path MTU Discovery.
Stops PMTUD probing and reverts to minimum MTU (1200 bytes).
Definition at line 1572 of file connection.cpp.
References congestion_controller_, kcenon::network::protocols::quic::pmtud_controller::disable(), kcenon::network::protocols::quic::pmtud_controller::min_mtu(), pmtud_controller_, and kcenon::network::protocols::quic::congestion_controller::set_max_datagram_size().

| void kcenon::network::protocols::quic::connection::enable_pmtud | ( | ) |
Enable Path MTU Discovery.
Starts PMTUD probing to discover the maximum MTU on the path. Uses DPLPMTUD algorithm as specified in RFC 8899.
Definition at line 1565 of file connection.cpp.
References congestion_controller_, kcenon::network::protocols::quic::pmtud_controller::current_mtu(), kcenon::network::protocols::quic::pmtud_controller::enable(), pmtud_controller_, and kcenon::network::protocols::quic::congestion_controller::set_max_datagram_size().

|
private |
Transition to closing state.
Definition at line 1212 of file connection.cpp.
References kcenon::network::protocols::quic::closing, drain_deadline_, kcenon::network::protocols::quic::draining, and state_.
|
private |
Transition to draining state.
Definition at line 1226 of file connection.cpp.
References kcenon::network::protocols::quic::closed, drain_deadline_, kcenon::network::protocols::quic::draining, and state_.
|
inlinenodiscard |
Get the connection-level flow controller.
Definition at line 385 of file connection.h.
References flow_ctrl_.
|
inlinenodiscard |
Get the connection-level flow controller (const)
Definition at line 390 of file connection.h.
References flow_ctrl_.
|
nodiscardprivate |
Generate ACK frame for a packet number space.
Definition at line 1315 of file connection.cpp.
References kcenon::network::protocols::quic::ack, and kcenon::network::protocols::quic::ack_frame::largest_acknowledged.
|
nodiscard |
Generate packets to send.
Definition at line 780 of file connection.cpp.
References kcenon::network::protocols::quic::application, kcenon::network::protocols::quic::complete, kcenon::network::protocols::quic::connected, kcenon::network::protocols::quic::handshake, and kcenon::network::protocols::quic::initial.
|
private |
Generate probe packets for PTO (RFC 9002 Section 6.2.4) Sends one or two ack-eliciting packets to probe for acknowledgment.
Definition at line 1384 of file connection.cpp.
References kcenon::network::protocols::quic::application, crypto_, kcenon::network::protocols::quic::quic_crypto::get_write_keys(), kcenon::network::protocols::quic::handshake, kcenon::network::protocols::quic::initial, pending_crypto_handshake_, pending_crypto_initial_, pending_frames_, and kcenon::network::protocols::quic::zero_rtt.
Referenced by handle_loss_detection_result().


|
nodiscardprivate |
Get packet number space for an encryption level.
Definition at line 1087 of file connection.cpp.
References kcenon::network::protocols::quic::handshake, kcenon::network::protocols::quic::initial, and kcenon::network::protocols::quic::zero_rtt.
|
nodiscardprivate |
Definition at line 1101 of file connection.cpp.
References kcenon::network::protocols::quic::handshake, kcenon::network::protocols::quic::initial, and kcenon::network::protocols::quic::zero_rtt.
|
nodiscardprivate |
Handle a specific frame.
Definition at line 550 of file connection.cpp.
References kcenon::network::protocols::quic::complete, kcenon::network::protocols::quic::connected, kcenon::network::error_void(), kcenon::network::protocols::quic::handshake, kcenon::network::protocols::quic::connection_error::handshake_failed, kcenon::network::protocols::quic::initial, kcenon::network::ok(), and kcenon::network::protocols::quic::connection_error::protocol_violation.

|
private |
Handle loss detection result (RFC 9002)
| result | Loss detection result from timeout or ACK processing |
Definition at line 1339 of file connection.cpp.
References kcenon::network::protocols::quic::loss_detection_result::acked_packets, congestion_controller_, kcenon::network::protocols::quic::congestion_signal, kcenon::network::protocols::quic::loss_detection_result::ecn_congestion_sent_time, kcenon::network::protocols::quic::ecn_failure, kcenon::network::protocols::quic::loss_detection_result::ecn_signal, kcenon::network::protocols::quic::loss_detection_result::event, generate_probe_packets(), kcenon::network::protocols::quic::loss_detection_result::lost_packets, kcenon::network::protocols::quic::none, kcenon::network::protocols::quic::congestion_controller::on_ecn_congestion(), kcenon::network::protocols::quic::congestion_controller::on_packet_acked(), kcenon::network::protocols::quic::congestion_controller::on_packet_lost(), kcenon::network::protocols::quic::packet_lost, kcenon::network::protocols::quic::pto_expired, and queue_frames_for_retransmission().
Referenced by on_timeout().


|
inlinenodiscardnoexcept |
Get current handshake state.
Definition at line 187 of file connection.h.
|
nodiscard |
Check if there are packets to send.
Definition at line 1053 of file connection.cpp.
References close_sent_, pending_ack_app_, pending_ack_handshake_, pending_ack_initial_, pending_crypto_app_, pending_crypto_handshake_, pending_crypto_initial_, pending_frames_, stream_mgr_, streams(), and kcenon::network::protocols::quic::stream_manager::streams_with_pending_data().

|
inlinenodiscard |
|
nodiscard |
Initialize server handshake.
| cert_file | Path to certificate file |
| key_file | Path to private key file |
Definition at line 295 of file connection.cpp.
References kcenon::network::tracing::trace_context::create_span(), kcenon::network::error_void(), kcenon::network::protocols::quic::connection_error::handshake_failed, kcenon::network::protocols::quic::handshaking, kcenon::network::protocols::quic::connection_error::invalid_state, kcenon::network::tracing::is_tracing_enabled(), and kcenon::network::ok().

|
inlinenodiscard |
Get initial Destination Connection ID (for key derivation)
Definition at line 239 of file connection.h.
References initial_dcid_.
Referenced by connection().

|
inlinenodiscardnoexcept |
Check if connection is closed.
Definition at line 212 of file connection.h.
References kcenon::network::protocols::quic::closed, and state_.
Referenced by next_timeout().

|
inlinenodiscardnoexcept |
Check if connection is draining or closing.
Definition at line 203 of file connection.h.
References kcenon::network::protocols::quic::closing, kcenon::network::protocols::quic::draining, and state_.
Referenced by next_timeout(), and on_timeout().

|
inlinenodiscardnoexcept |
Check if connection is established (handshake complete)
Definition at line 195 of file connection.h.
References kcenon::network::protocols::quic::connected, and state_.
|
inlinenodiscardnoexcept |
Check if this is a server-side connection.
Definition at line 220 of file connection.h.
References is_server_.
Referenced by connection().

|
inlinenodiscard |
|
inlinenodiscard |
Get local transport parameters.
Definition at line 308 of file connection.h.
References local_params_.
|
nodiscard |
Get the next timeout deadline.
Definition at line 1259 of file connection.cpp.
References drain_deadline_, idle_deadline_, is_closed(), is_draining(), loss_detector_, and kcenon::network::protocols::quic::loss_detector::next_timeout().

| void kcenon::network::protocols::quic::connection::on_timeout | ( | ) |
Handle timeout event.
Definition at line 1282 of file connection.cpp.
References close_error_code_, close_reason_, kcenon::network::protocols::quic::closed, drain_deadline_, handle_loss_detection_result(), idle_deadline_, is_draining(), loss_detector_, kcenon::network::protocols::quic::loss_detector::next_timeout(), kcenon::network::protocols::quic::loss_detector::on_timeout(), and state_.

|
delete |
|
delete |
|
inlinenodiscardnoexcept |
Get packets received count.
Definition at line 528 of file connection.h.
References packets_received_.
|
inlinenodiscardnoexcept |
|
nodiscardnoexcept |
Get current path MTU.
Definition at line 1560 of file connection.cpp.
References kcenon::network::protocols::quic::pmtud_controller::current_mtu(), and pmtud_controller_.

|
inlinenodiscard |
Get the peer connection ID manager.
Definition at line 260 of file connection.h.
References peer_cid_manager_.
|
inlinenodiscard |
Get the peer connection ID manager (const)
Definition at line 268 of file connection.h.
References peer_cid_manager_.
|
inlinenodiscard |
Get the PMTUD controller.
Definition at line 499 of file connection.h.
References pmtud_controller_.
|
inlinenodiscard |
Get the PMTUD controller (const)
Definition at line 504 of file connection.h.
References pmtud_controller_.
|
nodiscardnoexcept |
Check if PMTUD is enabled.
Definition at line 1579 of file connection.cpp.
References kcenon::network::protocols::quic::pmtud_controller::is_enabled(), and pmtud_controller_.

|
nodiscardprivate |
Process frames from a decrypted packet.
Definition at line 523 of file connection.cpp.
References kcenon::network::error_void(), kcenon::network::ok(), kcenon::network::protocols::quic::frame_parser::parse_all(), and kcenon::network::protocols::quic::connection_error::protocol_violation.

|
nodiscardprivate |
Process a long header packet.
Definition at line 428 of file connection.cpp.
References kcenon::network::error_void(), kcenon::network::protocols::quic::handshake, kcenon::network::protocols::quic::initial, kcenon::network::ok(), kcenon::network::protocols::quic::connection_error::protocol_violation, kcenon::network::protocols::quic::retry, and kcenon::network::protocols::quic::zero_rtt.

|
nodiscardprivate |
Process a short header packet.
Definition at line 488 of file connection.cpp.
References kcenon::network::protocols::quic::application, kcenon::network::protocols::quic::connected, kcenon::network::error_void(), kcenon::network::protocols::quic::connection_error::handshake_failed, and kcenon::network::protocols::quic::connection_error::not_established.

|
private |
Queue frames from lost packet for retransmission.
| lost_packet | The packet that was declared lost |
Definition at line 1433 of file connection.cpp.
References kcenon::network::protocols::quic::application, kcenon::network::protocols::quic::sent_packet::frames, kcenon::network::protocols::quic::handshake, kcenon::network::protocols::quic::initial, kcenon::network::protocols::quic::sent_packet::level, pending_crypto_app_, pending_crypto_handshake_, pending_crypto_initial_, pending_frames_, and kcenon::network::protocols::quic::zero_rtt.
Referenced by handle_loss_detection_result().

|
nodiscard |
Receive and process a packet.
| data | Raw packet data |
Definition at line 358 of file connection.cpp.
References kcenon::network::protocols::quic::connection_state_to_string(), kcenon::network::tracing::trace_context::create_span(), kcenon::network::error_void(), kcenon::network::protocols::quic::packet_parser::is_long_header(), kcenon::network::tracing::is_tracing_enabled(), kcenon::network::ok(), kcenon::network::protocols::quic::packet_parser::parse_long_header(), kcenon::network::protocols::quic::packet_parser::parse_short_header(), and kcenon::network::protocols::quic::connection_error::protocol_violation.

|
inlinenodiscard |
|
inlinenodiscard |
Get remote transport parameters.
Definition at line 316 of file connection.h.
References remote_params_.
|
private |
Reset idle timer.
Definition at line 1244 of file connection.cpp.
References idle_deadline_, local_params_, kcenon::network::protocols::quic::transport_parameters::max_idle_timeout, and remote_params_.
Referenced by connection().

|
nodiscard |
Retire a Connection ID.
| sequence | Sequence number of CID to retire |
Definition at line 126 of file connection.cpp.
References kcenon::network::error_void(), kcenon::network::ok(), and kcenon::network::protocols::quic::connection_error::protocol_violation.

|
nodiscard |
Rotate to a new peer connection ID.
Used for path migration or proactive CID rotation.
Definition at line 1551 of file connection.cpp.
| void kcenon::network::protocols::quic::connection::set_local_params | ( | const transport_parameters & | params | ) |
Set local transport parameters.
| params | Parameters to advertise to peer |
Definition at line 154 of file connection.cpp.
References kcenon::network::protocols::quic::transport_parameters::initial_max_streams_bidi, kcenon::network::protocols::quic::transport_parameters::initial_max_streams_uni, kcenon::network::protocols::quic::transport_parameters::initial_source_connection_id, local_cid_, local_params_, kcenon::network::protocols::quic::stream_manager::set_local_max_streams_bidi(), kcenon::network::protocols::quic::stream_manager::set_local_max_streams_uni(), and stream_mgr_.

| void kcenon::network::protocols::quic::connection::set_remote_params | ( | const transport_parameters & | params | ) |
Set remote transport parameters.
| params | Parameters received from peer |
Definition at line 164 of file connection.cpp.
References apply_remote_params(), and remote_params_.

|
nodiscard |
Start the handshake (client only)
| server_name | Server hostname for SNI |
Definition at line 199 of file connection.cpp.
References kcenon::network::tracing::trace_context::create_span(), kcenon::network::protocols::quic::error, kcenon::network::protocols::quic::connection_error::handshake_failed, kcenon::network::protocols::quic::handshaking, kcenon::network::protocols::quic::idle, kcenon::network::protocols::quic::connection_error::invalid_state, kcenon::network::tracing::is_tracing_enabled(), kcenon::network::message, kcenon::network::ok(), and kcenon::network::protocols::quic::waiting_server_hello.

|
inlinenodiscardnoexcept |
|
inlinenodiscard |
Get the stream manager.
Definition at line 371 of file connection.h.
References stream_mgr_.
Referenced by has_pending_data().

|
inlinenodiscard |
|
nodiscardprivate |
Convert sent_packet_info to sent_packet for loss detector.
Definition at line 1523 of file connection.cpp.
References kcenon::network::protocols::quic::sent_packet::ack_eliciting, kcenon::network::protocols::quic::sent_packet::frames, kcenon::network::protocols::quic::sent_packet::in_flight, kcenon::network::protocols::quic::sent_packet::level, kcenon::network::protocols::quic::sent_packet::packet_number, kcenon::network::protocols::quic::sent_packet::sent_bytes, and kcenon::network::protocols::quic::sent_packet::sent_time.
|
private |
Update connection state based on handshake progress.
Definition at line 1120 of file connection.cpp.
References kcenon::network::protocols::quic::complete, kcenon::network::protocols::quic::connected, crypto_, kcenon::network::protocols::quic::quic_crypto::is_handshake_complete(), is_server_, and state_.

|
private |
Definition at line 570 of file connection.h.
|
private |
Definition at line 590 of file connection.h.
|
private |
|
private |
|
private |
Definition at line 588 of file connection.h.
Referenced by close_error_code(), and on_timeout().
|
private |
Definition at line 589 of file connection.h.
Referenced by close_reason(), and on_timeout().
|
private |
Definition at line 587 of file connection.h.
|
private |
|
private |
Definition at line 562 of file connection.h.
Referenced by disable_pmtud(), enable_pmtud(), and handle_loss_detection_result().
|
private |
Definition at line 555 of file connection.h.
Referenced by crypto(), crypto(), generate_probe_packets(), and update_state().
|
private |
Definition at line 595 of file connection.h.
Referenced by enter_closing(), enter_draining(), next_timeout(), and on_timeout().
|
private |
Definition at line 557 of file connection.h.
Referenced by apply_remote_params(), flow_control(), and flow_control().
|
private |
Definition at line 569 of file connection.h.
|
private |
Definition at line 593 of file connection.h.
Referenced by apply_remote_params(), idle_deadline(), next_timeout(), on_timeout(), and reset_idle_timer().
|
private |
Definition at line 545 of file connection.h.
Referenced by initial_dcid().
|
private |
Definition at line 568 of file connection.h.
|
private |
Definition at line 538 of file connection.h.
Referenced by is_server(), and update_state().
|
private |
Definition at line 543 of file connection.h.
Referenced by connection(), local_cid(), and set_local_params().
|
private |
Definition at line 546 of file connection.h.
Referenced by connection().
|
private |
Definition at line 551 of file connection.h.
Referenced by apply_remote_params(), connection(), local_params(), reset_idle_timer(), and set_local_params().
|
private |
Definition at line 561 of file connection.h.
Referenced by next_timeout(), and on_timeout().
|
private |
Definition at line 547 of file connection.h.
|
private |
|
private |
|
private |
Definition at line 548 of file connection.h.
Referenced by active_peer_cid(), apply_remote_params(), connection(), peer_cid_manager(), and peer_cid_manager().
|
private |
|
private |
|
private |
|
private |
Definition at line 575 of file connection.h.
Referenced by has_pending_data(), and queue_frames_for_retransmission().
|
private |
Definition at line 574 of file connection.h.
Referenced by generate_probe_packets(), has_pending_data(), and queue_frames_for_retransmission().
|
private |
Definition at line 573 of file connection.h.
Referenced by generate_probe_packets(), has_pending_data(), and queue_frames_for_retransmission().
|
private |
Definition at line 583 of file connection.h.
Referenced by generate_probe_packets(), has_pending_data(), and queue_frames_for_retransmission().
|
private |
Definition at line 565 of file connection.h.
Referenced by disable_pmtud(), enable_pmtud(), path_mtu(), pmtud(), pmtud(), and pmtud_enabled().
|
private |
Definition at line 594 of file connection.h.
|
private |
Definition at line 544 of file connection.h.
Referenced by active_peer_cid(), connection(), and remote_cid().
|
private |
Definition at line 552 of file connection.h.
Referenced by apply_remote_params(), remote_params(), reset_idle_timer(), and set_remote_params().
|
private |
Definition at line 560 of file connection.h.
|
private |
Definition at line 539 of file connection.h.
Referenced by enter_closing(), enter_draining(), is_closed(), is_draining(), is_established(), on_timeout(), state(), and update_state().
|
private |
Definition at line 556 of file connection.h.
Referenced by apply_remote_params(), has_pending_data(), set_local_params(), streams(), and streams().