Quichex.Native (quichex v0.3.0)

View Source

Thin Rustler bindings to the quiche QUIC implementation.

These functions provide a direct bridge to the native library. Most NIFs return {:ok, term} / {:error, reason} tuples, while config setters return the updated config and raise Quichex.Native.ConfigError on failures.

Summary

Functions

Types

config()

@type config() :: reference()

connection()

@type connection() :: reference()

quic_binary()

@type quic_binary() :: binary()

reason()

@type reason() :: String.t()

stream_id()

@type stream_id() :: non_neg_integer()

Functions

config_discover_pmtu(config, enable)

@spec config_discover_pmtu(config(), boolean()) :: config()

config_enable_dgram(config, enabled, recv_queue_len, send_queue_len)

@spec config_enable_dgram(config(), boolean(), non_neg_integer(), non_neg_integer()) ::
  config()

config_enable_early_data(config)

@spec config_enable_early_data(config()) :: config()

config_enable_hystart(config, enable)

@spec config_enable_hystart(config(), boolean()) :: config()

config_enable_pacing(config, enable)

@spec config_enable_pacing(config(), boolean()) :: config()

config_grease(config, enable)

@spec config_grease(config(), boolean()) :: config()

config_load_cert_chain_from_pem_file(config, path)

@spec config_load_cert_chain_from_pem_file(config(), String.t()) :: config()

config_load_priv_key_from_pem_file(config, path)

@spec config_load_priv_key_from_pem_file(config(), String.t()) :: config()

config_load_verify_locations_from_directory(config, path)

@spec config_load_verify_locations_from_directory(config(), String.t()) :: config()

config_load_verify_locations_from_file(config, path)

@spec config_load_verify_locations_from_file(config(), String.t()) :: config()

config_log_keys(config)

@spec config_log_keys(config()) :: config()

config_new(version)

@spec config_new(non_neg_integer()) :: config()

config_set_ack_delay_exponent(config, value)

@spec config_set_ack_delay_exponent(config(), non_neg_integer()) :: config()

config_set_active_connection_id_limit(config, value)

@spec config_set_active_connection_id_limit(config(), non_neg_integer()) :: config()

config_set_application_protos(config, protos)

@spec config_set_application_protos(config(), [quic_binary()]) :: config()

config_set_cc_algorithm(config, algo)

@spec config_set_cc_algorithm(config(), String.t()) :: config()

config_set_disable_active_migration(config, disable)

@spec config_set_disable_active_migration(config(), boolean()) :: config()

config_set_disable_dcid_reuse(config, disable)

@spec config_set_disable_dcid_reuse(config(), boolean()) :: config()

config_set_initial_congestion_window_packets(config, value)

@spec config_set_initial_congestion_window_packets(config(), non_neg_integer()) ::
  config()

config_set_initial_max_data(config, value)

@spec config_set_initial_max_data(config(), non_neg_integer()) :: config()

config_set_initial_max_stream_data_bidi_local(config, value)

@spec config_set_initial_max_stream_data_bidi_local(config(), non_neg_integer()) ::
  config()

config_set_initial_max_stream_data_bidi_remote(config, value)

@spec config_set_initial_max_stream_data_bidi_remote(config(), non_neg_integer()) ::
  config()

config_set_initial_max_stream_data_uni(config, value)

@spec config_set_initial_max_stream_data_uni(config(), non_neg_integer()) :: config()

config_set_initial_max_streams_bidi(config, value)

@spec config_set_initial_max_streams_bidi(config(), non_neg_integer()) :: config()

config_set_initial_max_streams_uni(config, value)

@spec config_set_initial_max_streams_uni(config(), non_neg_integer()) :: config()

config_set_max_ack_delay(config, value)

@spec config_set_max_ack_delay(config(), non_neg_integer()) :: config()

config_set_max_amplification_factor(config, value)

@spec config_set_max_amplification_factor(config(), non_neg_integer()) :: config()

config_set_max_connection_window(config, value)

@spec config_set_max_connection_window(config(), non_neg_integer()) :: config()

config_set_max_datagram_frame_size(config, size)

@spec config_set_max_datagram_frame_size(config(), non_neg_integer()) :: config()

config_set_max_idle_timeout(config, millis)

@spec config_set_max_idle_timeout(config(), non_neg_integer()) :: config()

config_set_max_pacing_rate(config, value)

@spec config_set_max_pacing_rate(config(), non_neg_integer()) :: config()

config_set_max_recv_udp_payload_size(config, size)

@spec config_set_max_recv_udp_payload_size(config(), non_neg_integer()) :: config()

config_set_max_send_udp_payload_size(config, size)

@spec config_set_max_send_udp_payload_size(config(), non_neg_integer()) :: config()

config_set_max_stream_window(config, value)

@spec config_set_max_stream_window(config(), non_neg_integer()) :: config()

config_set_stateless_reset_token(config, token)

@spec config_set_stateless_reset_token(config(), quic_binary()) :: config()

config_set_ticket_key(config, key)

@spec config_set_ticket_key(config(), quic_binary()) :: config()

config_verify_peer(config, verify)

@spec config_verify_peer(config(), boolean()) :: config()

connection_application_proto(arg1)

See Quichex.Native.Nif.connection_application_proto/1.

connection_close(arg1, arg2, arg3, arg4)

See Quichex.Native.Nif.connection_close/4.

connection_destination_id(arg1)

See Quichex.Native.Nif.connection_destination_id/1.

connection_dgram_max_writable_len(arg1)

See Quichex.Native.Nif.connection_dgram_max_writable_len/1.

connection_dgram_recv(arg1, arg2)

See Quichex.Native.Nif.connection_dgram_recv/2.

connection_dgram_recv_queue_byte_size(arg1)

See Quichex.Native.Nif.connection_dgram_recv_queue_byte_size/1.

connection_dgram_recv_queue_len(arg1)

See Quichex.Native.Nif.connection_dgram_recv_queue_len/1.

connection_dgram_send(arg1, arg2)

See Quichex.Native.Nif.connection_dgram_send/2.

connection_dgram_send_queue_byte_size(arg1)

See Quichex.Native.Nif.connection_dgram_send_queue_byte_size/1.

connection_dgram_send_queue_len(arg1)

See Quichex.Native.Nif.connection_dgram_send_queue_len/1.

connection_is_closed(arg1)

See Quichex.Native.Nif.connection_is_closed/1.

connection_is_draining(arg1)

See Quichex.Native.Nif.connection_is_draining/1.

connection_is_established(arg1)

See Quichex.Native.Nif.connection_is_established/1.

connection_is_in_early_data(arg1)

See Quichex.Native.Nif.connection_is_in_early_data/1.

connection_is_resumed(arg1)

See Quichex.Native.Nif.connection_is_resumed/1.

connection_is_server(arg1)

See Quichex.Native.Nif.connection_is_server/1.

connection_is_timed_out(arg1)

See Quichex.Native.Nif.connection_is_timed_out/1.

connection_local_error(arg1)

See Quichex.Native.Nif.connection_local_error/1.

connection_new_client(arg1, arg2, arg3, arg4, arg5, arg6)

See Quichex.Native.Nif.connection_new_client/6.

connection_new_server(arg1, arg2, arg3, arg4, arg5, arg6)

See Quichex.Native.Nif.connection_new_server/6.

connection_on_timeout(arg1)

See Quichex.Native.Nif.connection_on_timeout/1.

connection_peer_cert(arg1)

See Quichex.Native.Nif.connection_peer_cert/1.

connection_peer_error(arg1)

See Quichex.Native.Nif.connection_peer_error/1.

connection_peer_transport_params(arg1)

See Quichex.Native.Nif.connection_peer_transport_params/1.

connection_readable_streams(arg1)

See Quichex.Native.Nif.connection_readable_streams/1.

connection_recv(arg1, arg2, arg3)

See Quichex.Native.Nif.connection_recv/3.

connection_send(arg1)

See Quichex.Native.Nif.connection_send/1.

connection_server_name(arg1)

See Quichex.Native.Nif.connection_server_name/1.

connection_session(arg1)

See Quichex.Native.Nif.connection_session/1.

connection_set_keylog_path(arg1, arg2)

See Quichex.Native.Nif.connection_set_keylog_path/2.

connection_set_session(arg1, arg2)

See Quichex.Native.Nif.connection_set_session/2.

connection_source_id(arg1)

See Quichex.Native.Nif.connection_source_id/1.

connection_stats(arg1)

See Quichex.Native.Nif.connection_stats/1.

connection_stream_finished(arg1, arg2)

See Quichex.Native.Nif.connection_stream_finished/2.

connection_stream_recv(arg1, arg2, arg3)

See Quichex.Native.Nif.connection_stream_recv/3.

connection_stream_send(arg1, arg2, arg3, arg4)

See Quichex.Native.Nif.connection_stream_send/4.

connection_stream_shutdown(arg1, arg2, arg3, arg4)

See Quichex.Native.Nif.connection_stream_shutdown/4.

connection_timeout(arg1)

See Quichex.Native.Nif.connection_timeout/1.

connection_trace_id(arg1)

See Quichex.Native.Nif.connection_trace_id/1.

connection_writable_streams(arg1)

See Quichex.Native.Nif.connection_writable_streams/1.

h3_config_enable_extended_connect(arg1, arg2)

See Quichex.Native.Nif.h3_config_enable_extended_connect/2.

h3_config_new()

See Quichex.Native.Nif.h3_config_new/0.

h3_config_set_additional_settings(arg1, arg2)

See Quichex.Native.Nif.h3_config_set_additional_settings/2.

h3_config_set_max_field_section_size(arg1, arg2)

See Quichex.Native.Nif.h3_config_set_max_field_section_size/2.

h3_config_set_qpack_blocked_streams(arg1, arg2)

See Quichex.Native.Nif.h3_config_set_qpack_blocked_streams/2.

h3_config_set_qpack_max_table_capacity(arg1, arg2)

See Quichex.Native.Nif.h3_config_set_qpack_max_table_capacity/2.

h3_conn_new_with_transport(arg1, arg2)

See Quichex.Native.Nif.h3_conn_new_with_transport/2.

h3_conn_poll(arg1, arg2)

See Quichex.Native.Nif.h3_conn_poll/2.

h3_dgram_enabled_by_peer(arg1, arg2)

See Quichex.Native.Nif.h3_dgram_enabled_by_peer/2.

h3_extended_connect_enabled_by_peer(arg1)

See Quichex.Native.Nif.h3_extended_connect_enabled_by_peer/1.

h3_recv_body(arg1, arg2, arg3, arg4)

See Quichex.Native.Nif.h3_recv_body/4.

h3_send_body(arg1, arg2, arg3, arg4, arg5)

See Quichex.Native.Nif.h3_send_body/5.

h3_send_goaway(arg1, arg2, arg3)

See Quichex.Native.Nif.h3_send_goaway/3.

h3_send_request(arg1, arg2, arg3, arg4)

See Quichex.Native.Nif.h3_send_request/4.

h3_send_response(arg1, arg2, arg3, arg4, arg5)

See Quichex.Native.Nif.h3_send_response/5.

header_info(arg1, arg2)

See Quichex.Native.Nif.header_info/2.

retry(arg1, arg2, arg3, arg4, arg5)

See Quichex.Native.Nif.retry/5.

version_negotiate(arg1, arg2)

See Quichex.Native.Nif.version_negotiate/2.