Deterministic handshake packet scheduler.
This module is deliberately socket-free. TLS emissions become retained
CRYPTO ranges and protected send effects; local send receipts and peer ACKs
are applied separately through Quic.Recovery.
Summary
Functions
Bind a migrated destination to an unused peer CID, except same-CID NAT rebinding.
Settle a definitely unsent packet and retain its reliable work for scheduling.
Confirm QUIC and retire Handshake after role-specific confirmation.
Consume queued stream events for a manual-delivery stream policy.
Release a path binding and queue retirement of its contiguous spent CID prefix.
Effective frame ceiling after peer negotiation and worst-case packet overhead.
Fold TLS driver effects returned from a CRYPTO receive into the scheduler.
Send HANDSHAKE_DONE after the server completes its TLS handshake.
Install the semantic values of authenticated, validated peer parameters.
Apply a local writer result; this is distinct from packet admission.
Open a locally initiated stream without creating a process per stream.
Whether this destination has an available peer CID.
Whether an unsent effect still carries the retained, current ciphertext.
Admit one ack-eliciting application PING through the bounded recovery scheduler.
Send one PTO-authorized probe without draining unrelated queued application work.
Queue an ACK frame for the next packet in a packet-number space.
Queue reliable control information, coalescing monotonic credit updates.
Apply an authenticated peer ACK to Recovery.
Process bounded coalesced packets in order, preserving an accepted prefix.
Process datagrams with authenticated arrival-path observations.
Alias for callers that process one packet rather than a datagram batch.
Reset only the local send direction and discard its pending data ranges.
Drop the QUIC keys, retained packets and CRYPTO storage for an obsolete level.
Whether the packet-number space is permanently retired.
Return the exact retained datagram for retransmission.
Repacketize retained CRYPTO under a fresh packet number without calling TLS.
Schedule all currently pending emissions and queued ACKs.
Admit one unreliable application DATAGRAM frame; loss never requeues it.
Protect a bounded path probe or response without changing the selected path.
Admit one application stream frame into the bounded scheduler queue.
Request cancellation of the receive direction, preserving the send half.
Types
@type t() :: %Quic.HandshakeScheduler{ acked_stream_fins: term(), acked_stream_ranges: term(), authenticated_error: term(), authenticated_packets: term(), dcid: term(), effects: term(), key_update: term(), keys: term(), local_cid_limit: term(), local_cids: term(), local_max_datagram_frame_size: term(), max_packet_size: term(), max_queue: term(), max_queue_bytes: term(), min_initial_size: term(), original_dcid: term(), path_events: term(), peer_cids: term(), peer_disable_active_migration: term(), peer_idle_timeout: term(), peer_initial_scid: term(), peer_max_datagram_frame_size: term(), pending: term(), pending_acks: term(), pending_control: term(), queued: term(), queued_bytes: term(), read_keys: term(), receive_path: term(), received_dcid: term(), recovery: term(), retry_scid: term(), retry_token: term(), role: term(), scid: term(), streams: term(), tls: term() }
Functions
Bind a migrated destination to an unused peer CID, except same-CID NAT rebinding.
Settle a definitely unsent packet and retain its reliable work for scheduling.
The caller removes the corresponding effect and schedules after selecting a usable path. Sent or uncertain writes cannot be cancelled through this API.
Confirm QUIC and retire Handshake after role-specific confirmation.
Consume queued stream events for a manual-delivery stream policy.
Release a path binding and queue retirement of its contiguous spent CID prefix.
Effective frame ceiling after peer negotiation and worst-case packet overhead.
@spec feed(t(), atom(), non_neg_integer(), binary()) :: {:ok, t(), list()} | {:error, term(), t(), list()}
Fold TLS driver effects returned from a CRYPTO receive into the scheduler.
Send HANDSHAKE_DONE after the server completes its TLS handshake.
Install the semantic values of authenticated, validated peer parameters.
Apply a local writer result; this is distinct from packet admission.
@spec open_stream(t(), :bidi | :uni) :: {:ok, t(), non_neg_integer()} | {:blocked, map()} | {:error, term()}
Open a locally initiated stream without creating a process per stream.
Whether this destination has an available peer CID.
Whether an unsent effect still carries the retained, current ciphertext.
Admit one ack-eliciting application PING through the bounded recovery scheduler.
Send one PTO-authorized probe without draining unrelated queued application work.
Queue an ACK frame for the next packet in a packet-number space.
Queue reliable control information, coalescing monotonic credit updates.
Apply an authenticated peer ACK to Recovery.
Process bounded coalesced packets in order, preserving an accepted prefix.
Process datagrams with authenticated arrival-path observations.
Alias for callers that process one packet rather than a datagram batch.
Reset only the local send direction and discard its pending data ranges.
Drop the QUIC keys, retained packets and CRYPTO storage for an obsolete level.
Whether the packet-number space is permanently retired.
Return the exact retained datagram for retransmission.
Repacketize retained CRYPTO under a fresh packet number without calling TLS.
Schedule all currently pending emissions and queued ACKs.
Admit one unreliable application DATAGRAM frame; loss never requeues it.
Protect a bounded path probe or response without changing the selected path.
@spec send_stream(t(), non_neg_integer(), binary(), boolean()) :: {:ok, t(), list()} | {:blocked, map() | :send_queue_limit | :send_queue_bytes_limit} | {:error, term()} | {:error, term(), t()}
Admit one application stream frame into the bounded scheduler queue.
Request cancellation of the receive direction, preserving the send half.