QUIC Connection. More...
#include <connection.h>

Data Fields | |
| char * | name |
| Name of this connection (for logging purposes) | |
| gboolean | is_server |
| Whether this is a server or a client connection (inherited from the endpoint) | |
| gboolean | just_started |
| Whether this connection has just started (e.g., to decide whether we need to derive initial secrets) | |
| gboolean | have_params |
| Whether we already received the peer QUIC transport parameters. | |
| imquic_connection_id | initial_cid |
| Initial Connection ID. | |
| imquic_connection_id | local_cid |
| Local and remote Connection ID. | |
| imquic_connection_id | remote_cid |
| imquic_connection_id | new_remote_cid |
| New remote Connection ID. | |
| GList * | connection_ids |
| List of Connection IDs our peer has used. | |
| enum ssl_encryption_level_t | level |
| Current encryption level. | |
| imquic_data_fixed | retry_token |
| Retry token, if any. | |
| uint64_t | pkn [4] |
| Current outgoing packet number for each encryption level. | |
| imquic_connection_parameters | local_params |
| Transport parameters (local and remote) | |
| imquic_connection_parameters | remote_params |
| imquic_data | alpn |
| ALPN. | |
| uint64_t | stream_next_uni |
| Next unidirectional and bidirectional stream we can create (as actual ID, not QUIC one) | |
| uint64_t | stream_next_bidi |
| GHashTable * | streams |
| Map of streams we're handling, and map of streams that are now done. | |
| GHashTable * | streams_done |
| GQueue * | incoming_data |
| Queued streams to process. | |
| GQueue * | outgoing_data |
| Queued data to send. | |
| GQueue * | outgoing_datagram |
| imquic_listmap * | blocked_streams |
| Listmap of blocked streams, in case we're waiting for credits. | |
| volatile gint | wakeup |
| Trigger to wake the loop for this connection as part of the imquic_connection_source management. | |
| imquic_connection_rtt | rtt |
| Different RTTs for this connection. | |
| imquic_connection_flow_control | flow_control |
| Flow control state. | |
| GList * | recvd [4] |
| List of received packet numbers, for each encryption level. | |
| uint64_t | largest [4] |
| Largest received packet numbers, for each encryption level. | |
| size_t | ack_eliciting_in_flight [4] |
| Number of ACK eliciting packets in flight, for each encryption level. | |
| int64_t | last_ack_eliciting_time [4] |
| Monotonic time of when we sent the last ACK eliciting packet, for each encryption level. | |
| int64_t | largest_time [4] |
| Monotonic time of when we received the largest packet numbers, per each encryption level (for ACK delay purposes) | |
| int64_t | loss_time [4] |
| Monotonic time of when the next packet can be considered, lost, per each encryption level. | |
| imquic_listmap * | sent_pkts [4] |
| Sent packets, per each encryption level. | |
| uint64_t | largest_acked [4] |
| Largest acked packet numbers, for each encryption level. | |
| gboolean | send_ack [5] |
| Whether we have ACKs to send for a specific encryption level. | |
| imquic_protection | keys [4] |
| Keys (protection, encryption) for each encryption level. | |
| gboolean | current_phase |
| Current value of the key phase bit. | |
| SSL * | ssl |
| Encryption instance. | |
| imquic_buffer * | crypto_in [4] |
Buffers for incoming and outgoing CRYPTO exchanges, at each encryption level. | |
| imquic_buffer * | crypto_out [4] |
| gboolean | send_crypto |
Whether we have CRYPTO frames to send. | |
| gboolean | alpn_negotiated |
| Whether an ALPN has been negotiated. | |
| gboolean | connected |
| Whether this connection has been established. | |
| imquic_network_endpoint * | socket |
| Networking instance for this connection. | |
| imquic_network_address | peer |
| Network address of the peer. | |
| imquic_http3_connection * | http3 |
| WebTransport context, if any. | |
| imquic_source * | ld_timer |
| Loss detection timer. | |
| int64_t | last_activity |
| Monotonic time of when we last got activity. | |
| imquic_source * | idle_timer |
| Idle timer. | |
| uint8_t | pto_count |
| PTO count. | |
| imquic_source * | loop_source |
| Loop source. | |
| uint32_t | dgram_id_in |
| Incoming and outgoing datagram IDs. | |
| uint32_t | dgram_id_out |
| imquic_qlog * | qlog |
| QLOG instance, if any. | |
| imquic_mutex | mutex |
| Mutex. | |
| gboolean | should_close |
| Whether this connection should be closed. | |
| volatile gint | closed |
| Whether this connection has been closed. | |
| volatile gint | destroyed |
| Whether this instance has been destroyed (reference counting) | |
| imquic_refcount | ref |
| Reference counter. | |
QUIC Connection.
| size_t imquic_connection::ack_eliciting_in_flight[4] |
Number of ACK eliciting packets in flight, for each encryption level.
| imquic_data imquic_connection::alpn |
ALPN.
| gboolean imquic_connection::alpn_negotiated |
Whether an ALPN has been negotiated.
| imquic_listmap* imquic_connection::blocked_streams |
Listmap of blocked streams, in case we're waiting for credits.
| volatile gint imquic_connection::closed |
Whether this connection has been closed.
| gboolean imquic_connection::connected |
Whether this connection has been established.
| GList* imquic_connection::connection_ids |
List of Connection IDs our peer has used.
| imquic_buffer* imquic_connection::crypto_in[4] |
Buffers for incoming and outgoing CRYPTO exchanges, at each encryption level.
| imquic_buffer * imquic_connection::crypto_out[4] |
| gboolean imquic_connection::current_phase |
Current value of the key phase bit.
| volatile gint imquic_connection::destroyed |
Whether this instance has been destroyed (reference counting)
| uint32_t imquic_connection::dgram_id_in |
Incoming and outgoing datagram IDs.
| uint32_t imquic_connection::dgram_id_out |
| imquic_connection_flow_control imquic_connection::flow_control |
Flow control state.
| gboolean imquic_connection::have_params |
Whether we already received the peer QUIC transport parameters.
| imquic_http3_connection* imquic_connection::http3 |
WebTransport context, if any.
| imquic_source* imquic_connection::idle_timer |
Idle timer.
| GQueue* imquic_connection::incoming_data |
Queued streams to process.
| imquic_connection_id imquic_connection::initial_cid |
Initial Connection ID.
| gboolean imquic_connection::is_server |
Whether this is a server or a client connection (inherited from the endpoint)
| gboolean imquic_connection::just_started |
Whether this connection has just started (e.g., to decide whether we need to derive initial secrets)
| imquic_protection imquic_connection::keys[4] |
Keys (protection, encryption) for each encryption level.
| uint64_t imquic_connection::largest[4] |
Largest received packet numbers, for each encryption level.
| uint64_t imquic_connection::largest_acked[4] |
Largest acked packet numbers, for each encryption level.
| int64_t imquic_connection::largest_time[4] |
Monotonic time of when we received the largest packet numbers, per each encryption level (for ACK delay purposes)
| int64_t imquic_connection::last_ack_eliciting_time[4] |
Monotonic time of when we sent the last ACK eliciting packet, for each encryption level.
| int64_t imquic_connection::last_activity |
Monotonic time of when we last got activity.
| imquic_source* imquic_connection::ld_timer |
Loss detection timer.
| enum ssl_encryption_level_t imquic_connection::level |
Current encryption level.
| imquic_connection_id imquic_connection::local_cid |
Local and remote Connection ID.
| imquic_connection_parameters imquic_connection::local_params |
Transport parameters (local and remote)
| imquic_source* imquic_connection::loop_source |
Loop source.
| int64_t imquic_connection::loss_time[4] |
Monotonic time of when the next packet can be considered, lost, per each encryption level.
| imquic_mutex imquic_connection::mutex |
Mutex.
| char* imquic_connection::name |
Name of this connection (for logging purposes)
| imquic_connection_id imquic_connection::new_remote_cid |
New remote Connection ID.
| GQueue* imquic_connection::outgoing_data |
Queued data to send.
| GQueue * imquic_connection::outgoing_datagram |
| imquic_network_address imquic_connection::peer |
Network address of the peer.
| uint64_t imquic_connection::pkn[4] |
Current outgoing packet number for each encryption level.
| uint8_t imquic_connection::pto_count |
PTO count.
| imquic_qlog* imquic_connection::qlog |
QLOG instance, if any.
| GList* imquic_connection::recvd[4] |
List of received packet numbers, for each encryption level.
| imquic_refcount imquic_connection::ref |
Reference counter.
| imquic_connection_id imquic_connection::remote_cid |
| imquic_connection_parameters imquic_connection::remote_params |
| imquic_data_fixed imquic_connection::retry_token |
Retry token, if any.
| imquic_connection_rtt imquic_connection::rtt |
Different RTTs for this connection.
| gboolean imquic_connection::send_ack[5] |
Whether we have ACKs to send for a specific encryption level.
| gboolean imquic_connection::send_crypto |
Whether we have CRYPTO frames to send.
| imquic_listmap* imquic_connection::sent_pkts[4] |
Sent packets, per each encryption level.
| gboolean imquic_connection::should_close |
Whether this connection should be closed.
| imquic_network_endpoint* imquic_connection::socket |
Networking instance for this connection.
| SSL* imquic_connection::ssl |
Encryption instance.
| uint64_t imquic_connection::stream_next_bidi |
| uint64_t imquic_connection::stream_next_uni |
Next unidirectional and bidirectional stream we can create (as actual ID, not QUIC one)
| GHashTable* imquic_connection::streams |
Map of streams we're handling, and map of streams that are now done.
| GHashTable * imquic_connection::streams_done |
| volatile gint imquic_connection::wakeup |
Trigger to wake the loop for this connection as part of the imquic_connection_source management.