|
imquic_server * | imquic_create_moq_server (const char *name,...) |
| Method to create a new MoQ server, using variable arguments to dictate what the server should do (e.g., port to bind to, ALPN, etc.). Variable arguments are in the form of a sequence of name-value started with a IMQUIC_CONFIG_INIT and ended by a IMQUIC_CONFIG_DONE , e.g.:
|
|
imquic_client * | imquic_create_moq_client (const char *name,...) |
| Method to create a new MoQ client, using variable arguments to dictate what the client should do (e.g., address to connect to, ALPN, etc.). Variable arguments are in the form of a sequence of name-value started with a IMQUIC_CONFIG_INIT and ended by a IMQUIC_CONFIG_DONE , e.g.:
|
|
void | imquic_set_new_moq_connection_cb (imquic_endpoint *endpoint, void(*new_moq_connection)(imquic_connection *conn, void *user_data)) |
| Configure the callback function to be notified about new MoQ connections on the configured endpoint. For a server, it will be triggered any time a client successfully connects to the server; for a client, it will be triggered when the client successfully connects to the server. Notice that this precedes the MoQ setup/handshakes, which means this is where you need to configure the MoQ role via imquic_moq_set_role. You'll need to wait until the callback set in imquic_set_moq_ready_cb is fired, before being able to use the MoQ API for publishing/subscribing.
|
|
void | imquic_set_moq_ready_cb (imquic_endpoint *endpoint, void(*moq_ready)(imquic_connection *conn)) |
| Configure the callback function to be notified when a MoQ connection has been successfully established. After this, the MoQ APIs can be used to start exchanging MoQ messages.
|
|
void | imquic_set_incoming_announce_cb (imquic_endpoint *endpoint, void(*incoming_announce)(imquic_connection *conn, imquic_moq_namespace *tns)) |
| Configure the callback function to be notified when there's an incoming ANNOUNCE request.
|
|
void | imquic_set_incoming_announce_cancel_cb (imquic_endpoint *endpoint, void(*incoming_announce_cancel)(imquic_connection *conn, imquic_moq_namespace *tns)) |
| Configure the callback function to be notified when there's an incoming ANNOUNCE_CANCEL request.
|
|
void | imquic_set_announce_accepted_cb (imquic_endpoint *endpoint, void(*announce_accepted)(imquic_connection *conn, imquic_moq_namespace *tns)) |
| Configure the callback function to be notified when an ANNOUNCE we previously sent was accepted.
|
|
void | imquic_set_announce_error_cb (imquic_endpoint *endpoint, void(*announce_error)(imquic_connection *conn, imquic_moq_namespace *tns, int error_code, const char *reason)) |
| Configure the callback function to be notified when an ANNOUNCE we previously sent was rejected with an error.
|
|
void | imquic_set_incoming_unannounce_cb (imquic_endpoint *endpoint, void(*incoming_unannounce)(imquic_connection *conn, imquic_moq_namespace *tns)) |
| Configure the callback function to be notified when there's an incoming UNANNOUNCE request.
|
|
void | imquic_set_incoming_subscribe_cb (imquic_endpoint *endpoint, void(*incoming_subscribe)(imquic_connection *conn, uint64_t subscribe_id, uint64_t track_alias, imquic_moq_namespace *tns, imquic_moq_name *tn, imquic_moq_auth_info *auth)) |
| Configure the callback function to be notified when there's an incoming SUBSCRIBE request.
|
|
void | imquic_set_subscribe_accepted_cb (imquic_endpoint *endpoint, void(*subscribe_accepted)(imquic_connection *conn, uint64_t subscribe_id, uint64_t expires, gboolean descending)) |
| Configure the callback function to be notified when an SUBSCRIBE we previously sent was accepted.
|
|
void | imquic_set_subscribe_error_cb (imquic_endpoint *endpoint, void(*subscribe_error)(imquic_connection *conn, uint64_t subscribe_id, int error_codes, const char *reason, uint64_t track_alias)) |
|
void | imquic_set_subscribe_done_cb (imquic_endpoint *endpoint, void(*subscribe_done)(imquic_connection *conn, uint64_t subscribe_id, int status_code, const char *reason)) |
| Configure the callback function to be notified when an SUBSCRIBE we previously sent is now done.
|
|
void | imquic_set_incoming_unsubscribe_cb (imquic_endpoint *endpoint, void(*incoming_unsubscribe)(imquic_connection *conn, uint64_t subscribe_id)) |
| Configure the callback function to be notified when there's an incoming UNSUBSCRIBE request.
|
|
void | imquic_set_incoming_subscribe_announces_cb (imquic_endpoint *endpoint, void(*incoming_subscribe_announces)(imquic_connection *conn, imquic_moq_namespace *tns, imquic_moq_auth_info *auth)) |
| Configure the callback function to be notified when there's an incoming SUBSCRIBE_ANNOUNCES request.
|
|
void | imquic_set_subscribe_announces_accepted_cb (imquic_endpoint *endpoint, void(*subscribe_announces_accepted)(imquic_connection *conn, imquic_moq_namespace *tns)) |
| Configure the callback function to be notified when an SUBSCRIBE_ANNOUNCES we previously sent was accepted.
|
|
void | imquic_set_subscribe_announces_error_cb (imquic_endpoint *endpoint, void(*subscribe_announces_error)(imquic_connection *conn, imquic_moq_namespace *tns, int error_code, const char *reason)) |
| Configure the callback function to be notified when an SUBSCRIBE_ANNOUNCES we previously sent was rejected with an error.
|
|
void | imquic_set_incoming_unsubscribe_announces_cb (imquic_endpoint *endpoint, void(*incoming_unsubscribe_announces)(imquic_connection *conn, imquic_moq_namespace *tns)) |
| Configure the callback function to be notified when there's an incoming UNSUBSCRIBE_ANNOUNCES request.
|
|
void | imquic_set_incoming_fetch_cb (imquic_endpoint *endpoint, void(*incoming_fetch)(imquic_connection *conn, uint64_t subscribe_id, imquic_moq_namespace *tns, imquic_moq_name *tn, gboolean descending, imquic_moq_fetch_range *range, imquic_moq_auth_info *auth)) |
| Configure the callback function to be notified when there's an incoming FETCH request.
|
|
void | imquic_set_incoming_fetch_cancel_cb (imquic_endpoint *endpoint, void(*incoming_fetch_cancel)(imquic_connection *conn, uint64_t subscribe_id)) |
| Configure the callback function to be notified when there's an incoming FETCH_CANCEL request.
|
|
void | imquic_set_fetch_accepted_cb (imquic_endpoint *endpoint, void(*fetch_accepted)(imquic_connection *conn, uint64_t subscribe_id, gboolean descending, imquic_moq_position *largest)) |
| Configure the callback function to be notified when an FETCH we previously sent was accepted.
|
|
void | imquic_set_fetch_error_cb (imquic_endpoint *endpoint, void(*fetch_error)(imquic_connection *conn, uint64_t subscribe_id, int error_codes, const char *reason)) |
|
void | imquic_set_incoming_object_cb (imquic_endpoint *endpoint, void(*incoming_object)(imquic_connection *conn, imquic_moq_object *object)) |
| Configure the callback function to be notified when there's an incoming MoQ object, independently of how it was multiplexed on the wire.
|
|
void | imquic_set_incoming_goaway_cb (imquic_endpoint *endpoint, void(*incoming_goaway)(imquic_connection *conn, const char *uri)) |
| Configure the callback function to be notified when there's an incoming GOAWAY request.
|
|
void | imquic_set_moq_connection_gone_cb (imquic_endpoint *endpoint, void(*moq_connection_gone)(imquic_connection *conn)) |
| Configure the callback function to be notified when an existing MoQ connection handled by this endpoint has been closed/shut down.
|
|
const char * | imquic_moq_role_str (imquic_moq_role role) |
| Helper function to serialize to string the name of a imquic_moq_role property.
|
|
const char * | imquic_moq_version_str (imquic_moq_version version) |
| Helper function to serialize to string the name of a imquic_moq_version property.
|
|
const char * | imquic_moq_delivery_str (imquic_moq_delivery type) |
| Helper function to serialize to string the name of a imquic_moq_delivery property.
|
|
const char * | imquic_moq_object_status_str (imquic_moq_object_status status) |
| Helper function to serialize to string the name of a imquic_moq_object_status property.
|
|
imquic MoQ public interface
- Author
- Lorenzo Miniero loren.nosp@m.zo@m.nosp@m.eetec.nosp@m.ho.c.nosp@m.om
- Copyright
- MIT License
Public interface to the Media Over QUIC (MoQ) native support in the imquic library. This is where public functions are callbacks to interact with the MoQ features of the library are defined.
imquic_client * imquic_create_moq_client |
( |
const char * | name, |
|
|
| ... ) |
Method to create a new MoQ client, using variable arguments to dictate what the client should do (e.g., address to connect to, ALPN, etc.). Variable arguments are in the form of a sequence of name-value started with a IMQUIC_CONFIG_INIT
and ended by a IMQUIC_CONFIG_DONE
, e.g.:
imquic_server *client = imquic_create_moq_client("moq-sub",
IMQUIC_CONFIG_INIT,
IMQUIC_CONFIG_TLS_CERT, cert_pem,
IMQUIC_CONFIG_TLS_KEY, cert_key,
IMQUIC_CONFIG_TLS_PASSWORD, cert_pwd,
IMQUIC_CONFIG_REMOTE_HOST, "127.0.0.1",
IMQUIC_CONFIG_REMOTE_PORT, 9000,
IMQUIC_CONFIG_WEBTRANSPORT, TRUE,
IMQUIC_CONFIG_HTTP3_PATH, "/moq",
IMQUIC_CONFIG_DONE, NULL);
to create a QUIC client that will automatically negotiate MoQ over WebTransport. Notice that the MoQ role (publisher, subscriber or relay) is not set here: this is only specifying the QUIC role (client). For the MoQ role, see the imquic_set_new_moq_connection_cb callback and imquic_moq_set_role. Again, as with imquic_create_client this will only create the resource, but not actually start the connection: before doing that, you'll need to configure the callbacks for the events you're interested in (in this case, MoQ specific), and then use imquic_start_endpoint to start the QUIC client (which will attempt a connection).
- Note
- This will create a full, internal, MoQ stack on top of imquic, meaning that the MoQ Transport protocol will be handled natively by imquic for you, providing a high level interface to the features of the protocol itself. If you want to only use imquic as a QUIC/WebTrasport protocol, and implement MoQ yourself, then you'll need to use imquic_create_server or imquic_create_client instead.
- Parameters
-
[in] | name | The endpoint name (if NULL, a default value will be set) |
- Returns
- A pointer to a imquic_client object, if successful, NULL otherwise
imquic_server * imquic_create_moq_server |
( |
const char * | name, |
|
|
| ... ) |
Method to create a new MoQ server, using variable arguments to dictate what the server should do (e.g., port to bind to, ALPN, etc.). Variable arguments are in the form of a sequence of name-value started with a IMQUIC_CONFIG_INIT
and ended by a IMQUIC_CONFIG_DONE
, e.g.:
imquic_server *server = imquic_create_moq_server("moq-relay",
IMQUIC_CONFIG_INIT,
IMQUIC_CONFIG_TLS_CERT, cert_pem,
IMQUIC_CONFIG_TLS_KEY, cert_key,
IMQUIC_CONFIG_TLS_PASSWORD, cert_pwd,
IMQUIC_CONFIG_LOCAL_PORT, 9000,
IMQUIC_CONFIG_WEBTRANSPORT, TRUE,
IMQUIC_CONFIG_DONE, NULL);
to create a QUIC server that will automatically negotiate MoQ over WebTransport. Notice that the MoQ role (publisher, subscriber or relay) is not set here: this is only specifying the QUIC role (server). For the MoQ role, see the imquic_set_new_moq_connection_cb callback and imquic_moq_set_role. Again, as with imquic_create_server this will only create the resource, but not actually start the server: before doing that, you'll need to configure the callbacks for the events you're interested in (in this case, MoQ specific), and then use imquic_start_endpoint to start the QUIC server (which will wait for incoming connections).
- Note
- This will create a full, internal, MoQ stack on top of imquic, meaning that the MoQ Transport protocol will be handled natively by imquic for you, providing a high level interface to the features of the protocol itself. If you want to only use imquic as a QUIC/WebTrasport protocol, and implement MoQ yourself, then you'll need to use imquic_create_server or imquic_create_client instead.
- Parameters
-
[in] | name | The endpoint name (if NULL, a default value will be set) |
- Returns
- A pointer to a imquic_server object, if successful, NULL otherwise