Abstraction of a network endpoint (client or server) More...
#include <network.h>

Data Fields | |
| void * | source |
| char * | name |
| Name of this endpoint. | |
| gboolean | is_server |
| Whether this is a client or a server. | |
| int | fd |
| Socket. | |
| uint16_t | port |
| Local and remote ports. | |
| uint16_t | remote_port |
| imquic_network_address | local_address |
| Local address. | |
| imquic_network_address | remote_address |
| Remote address of the peer (clients only) | |
| picoquic_quic_t * | qc |
| struct imquic_source * | timer |
| char * | sni |
| SNI the client will use. | |
| gboolean | raw_quic |
| Whether raw QUIC should be supported. | |
| char ** | alpn |
| Array of ALPN this endpoint will negotiate, when using raw QUIC. | |
| gboolean | webtransport |
| Whether WebTransport should be supported. | |
| char * | h3_path |
For WebTransport clients, the path to CONNECT to (/ by default) | |
| char ** | wt_protocols |
| In case WebTransport is used, array of protocols to negotiate. | |
| GHashTable * | connections |
| List of connections handled by this socket (may be more than one for servers) | |
| GHashTable * | connections_by_cnx |
| uint64_t | conns_num |
| Number of connections handled by this socket (may be more than one for servers) | |
| gboolean | internal_callbacks |
| Whether this endpoint has internal generic callbacks (true for the native RoQ and MoQ stacks) | |
| void(* | new_connection )(imquic_connection *conn, void *user_data) |
| Callback to invoke when a new connection is available on this endpoint. | |
| void(* | stream_incoming )(imquic_connection *conn, uint64_t stream_id, uint8_t *bytes, uint64_t length, gboolean complete) |
Callback to invoke when new STREAM data is available on one of the connections handled by this endpoint. | |
| void(* | datagram_incoming )(imquic_connection *conn, uint8_t *bytes, uint64_t length) |
Callback to invoke when new DATAGRAM data is available on one of the connections handled by this endpoint. | |
| void(* | reset_stream_incoming )(imquic_connection *conn, uint64_t stream_id, uint64_t error_code) |
Callback to invoke when a RESET_STREAM arrives on one of the connections handled by this endpoint. | |
| void(* | connection_gone )(imquic_connection *conn) |
| Callback to invoke when new one of the connections handled by this endpoint is closed. | |
| void(* | connection_failed )(void *user_data) |
| Callback to invoke when a client connection attempt fails. | |
| void * | user_data |
User data to pass in the new_connection callback, to correlate a connection to the endpoint it's coming from. | |
| uint64_t | protocol |
| (Sub-)Protocol this endpoint uses, in case imquic is handling a protocol natively | |
| union { | |
| imquic_moq_callbacks moq | |
| imquic_roq_callbacks roq | |
| } | callbacks |
| (Sub-)Protocol specific callbacks (at the time of writing, RoQ and MoQ only) | |
| char * | qlog_path |
| Path to save QLOG files to, if needed/supported: a filename for clients, a folder for servers. | |
| gboolean | qlog_sequential |
| Whether sequential JSON should be used for the QLOG file, instead of regular JSON. | |
| gboolean | qlog_quic |
| Whether HTTP/3 and/or RoQ and/or MoQT events should be saved to QLOG, if supported. | |
| gboolean | qlog_http3 |
| gboolean | qlog_roq |
| gboolean | qlog_roq_packets |
| gboolean | qlog_moq |
| gboolean | qlog_moq_messages |
| gboolean | qlog_moq_objects |
| uint32_t | moq_version |
| imquic_mutex | mutex |
| Mutex. | |
| volatile gint | started |
| Whether this connection has been started. | |
| volatile gint | shutting |
| Whether this connection is being shut down. | |
| volatile gint | destroyed |
| Whether this instance has been destroyed (reference counting) | |
| imquic_refcount | ref |
| Reference counter. | |
Abstraction of a network endpoint (client or server)
| char** imquic_network_endpoint::alpn |
Array of ALPN this endpoint will negotiate, when using raw QUIC.
| union { ... } imquic_network_endpoint::callbacks |
(Sub-)Protocol specific callbacks (at the time of writing, RoQ and MoQ only)
| void(* imquic_network_endpoint::connection_failed) (void *user_data) |
Callback to invoke when a client connection attempt fails.
| void(* imquic_network_endpoint::connection_gone) (imquic_connection *conn) |
Callback to invoke when new one of the connections handled by this endpoint is closed.
| GHashTable* imquic_network_endpoint::connections |
List of connections handled by this socket (may be more than one for servers)
| GHashTable * imquic_network_endpoint::connections_by_cnx |
| uint64_t imquic_network_endpoint::conns_num |
Number of connections handled by this socket (may be more than one for servers)
| void(* imquic_network_endpoint::datagram_incoming) (imquic_connection *conn, uint8_t *bytes, uint64_t length) |
Callback to invoke when new DATAGRAM data is available on one of the connections handled by this endpoint.
| volatile gint imquic_network_endpoint::destroyed |
Whether this instance has been destroyed (reference counting)
| int imquic_network_endpoint::fd |
Socket.
| char* imquic_network_endpoint::h3_path |
For WebTransport clients, the path to CONNECT to (/ by default)
| gboolean imquic_network_endpoint::internal_callbacks |
Whether this endpoint has internal generic callbacks (true for the native RoQ and MoQ stacks)
| gboolean imquic_network_endpoint::is_server |
Whether this is a client or a server.
| imquic_network_address imquic_network_endpoint::local_address |
Local address.
| imquic_moq_callbacks imquic_network_endpoint::moq |
| uint32_t imquic_network_endpoint::moq_version |
brief MoQ version to negotiare, if any
| imquic_mutex imquic_network_endpoint::mutex |
Mutex.
| char* imquic_network_endpoint::name |
Name of this endpoint.
| void(* imquic_network_endpoint::new_connection) (imquic_connection *conn, void *user_data) |
Callback to invoke when a new connection is available on this endpoint.
| uint16_t imquic_network_endpoint::port |
Local and remote ports.
| uint64_t imquic_network_endpoint::protocol |
(Sub-)Protocol this endpoint uses, in case imquic is handling a protocol natively
| picoquic_quic_t* imquic_network_endpoint::qc |
| gboolean imquic_network_endpoint::qlog_http3 |
| gboolean imquic_network_endpoint::qlog_moq |
| gboolean imquic_network_endpoint::qlog_moq_messages |
| gboolean imquic_network_endpoint::qlog_moq_objects |
| char* imquic_network_endpoint::qlog_path |
Path to save QLOG files to, if needed/supported: a filename for clients, a folder for servers.
| gboolean imquic_network_endpoint::qlog_quic |
Whether HTTP/3 and/or RoQ and/or MoQT events should be saved to QLOG, if supported.
| gboolean imquic_network_endpoint::qlog_roq |
| gboolean imquic_network_endpoint::qlog_roq_packets |
| gboolean imquic_network_endpoint::qlog_sequential |
Whether sequential JSON should be used for the QLOG file, instead of regular JSON.
| gboolean imquic_network_endpoint::raw_quic |
Whether raw QUIC should be supported.
| imquic_refcount imquic_network_endpoint::ref |
Reference counter.
| imquic_network_address imquic_network_endpoint::remote_address |
Remote address of the peer (clients only)
| uint16_t imquic_network_endpoint::remote_port |
| void(* imquic_network_endpoint::reset_stream_incoming) (imquic_connection *conn, uint64_t stream_id, uint64_t error_code) |
Callback to invoke when a RESET_STREAM arrives on one of the connections handled by this endpoint.
| imquic_roq_callbacks imquic_network_endpoint::roq |
| volatile gint imquic_network_endpoint::shutting |
Whether this connection is being shut down.
| char* imquic_network_endpoint::sni |
SNI the client will use.
| void* imquic_network_endpoint::source |
brief Opaque pointer to the source owning this socket (to handle it in the loop)
| volatile gint imquic_network_endpoint::started |
Whether this connection has been started.
| void(* imquic_network_endpoint::stream_incoming) (imquic_connection *conn, uint64_t stream_id, uint8_t *bytes, uint64_t length, gboolean complete) |
Callback to invoke when new STREAM data is available on one of the connections handled by this endpoint.
| struct imquic_source* imquic_network_endpoint::timer |
| void* imquic_network_endpoint::user_data |
User data to pass in the new_connection callback, to correlate a connection to the endpoint it's coming from.
| gboolean imquic_network_endpoint::webtransport |
Whether WebTransport should be supported.
| char** imquic_network_endpoint::wt_protocols |
In case WebTransport is used, array of protocols to negotiate.