imquic MoQ public interface (headers) More...
#include "imquic.h"
Go to the source code of this file.
Data Structures | |
struct | imquic_moq_namespace |
MoQ Track Namespace. More... | |
struct | imquic_moq_name |
MoQ Track Name. More... | |
struct | imquic_moq_auth_info |
MoQ Auth Info. More... | |
struct | imquic_moq_position |
MoQ Group/Object couple (for ranges) More... | |
struct | imquic_moq_fetch_range |
MoQ FETCH range (from where to where) More... | |
struct | imquic_moq_object |
MoQ Object. More... | |
Typedefs | |
typedef struct imquic_moq_namespace | imquic_moq_namespace |
MoQ Track Namespace. | |
typedef struct imquic_moq_name | imquic_moq_name |
MoQ Track Name. | |
typedef struct imquic_moq_auth_info | imquic_moq_auth_info |
MoQ Auth Info. | |
typedef struct imquic_moq_position | imquic_moq_position |
MoQ Group/Object couple (for ranges) | |
typedef struct imquic_moq_fetch_range | imquic_moq_fetch_range |
MoQ FETCH range (from where to where) | |
typedef enum imquic_moq_delivery | imquic_moq_delivery |
Ways of sending objects. | |
typedef enum imquic_moq_object_status | imquic_moq_object_status |
MoQ Object status. | |
typedef struct imquic_moq_object | imquic_moq_object |
MoQ Object. | |
typedef enum imquic_moq_role | imquic_moq_role |
Roles that can be specified once connected. | |
typedef enum imquic_moq_version | imquic_moq_version |
Versions that can be negotiated. | |
Functions | |
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. | |
const char * | imquic_moq_role_str (imquic_moq_role role) |
Helper function to serialize to string the name of a imquic_moq_role property. | |
int | imquic_moq_set_role (imquic_connection *conn, imquic_moq_role role) |
Method to set the MoQ role on a connection. Must be done as soon as the connection is established, and before sending any MoQ message. A good place to do that is the callback fired when a new connection is available. | |
imquic_moq_role | imquic_moq_get_role (imquic_connection *conn) |
Helper function to get the MoQ role associated with a connection. | |
const char * | imquic_moq_version_str (imquic_moq_version version) |
Helper function to serialize to string the name of a imquic_moq_version property. | |
int | imquic_moq_set_version (imquic_connection *conn, imquic_moq_version version) |
Method to set the MoQ version on a connection. Must be done as soon as the connection is established, and before sending any MoQ message. A good place to do that is the callback fired when a new connection is available. | |
imquic_moq_version | imquic_moq_get_version (imquic_connection *conn) |
Helper function to get the MoQ version associated with a connection. | |
int | imquic_moq_set_max_subscribe_id (imquic_connection *conn, uint64_t max_subscribe_id) |
Helper function to set the Maximum Subscribe ID a subscriber can send. | |
MoQ endpoints management | |
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_code, const char *reason, uint64_t track_alias)) |
Configure the callback function to be notified when an SUBSCRIBE we previously sent was rejected with an error. | |
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_code, const char *reason)) |
Configure the callback function to be notified when an FETCH we previously sent was rejected with an error. | |
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. | |
Using the MoQ API | |
int | imquic_moq_announce (imquic_connection *conn, imquic_moq_namespace *tns) |
Function to send an ANNOUNCE request. | |
int | imquic_moq_accept_announce (imquic_connection *conn, imquic_moq_namespace *tns) |
Function to accept an incoming ANNOUNCE request. | |
int | imquic_moq_reject_announce (imquic_connection *conn, imquic_moq_namespace *tns, int error_code, const char *reason) |
Function to reject an incoming ANNOUNCE request. | |
int | imquic_moq_unannounce (imquic_connection *conn, imquic_moq_namespace *tns) |
Function to send an UNANNOUNCE request. | |
int | imquic_moq_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) |
Function to send a SUBSCRIBE request. | |
int | imquic_moq_accept_subscribe (imquic_connection *conn, uint64_t subscribe_id, uint64_t expires, gboolean descending) |
Function to accept an incoming SUBSCRIBE request. | |
int | imquic_moq_reject_subscribe (imquic_connection *conn, uint64_t subscribe_id, int error_code, const char *reason, uint64_t track_alias) |
Function to reject an incoming SUBSCRIBE request. | |
int | imquic_moq_unsubscribe (imquic_connection *conn, uint64_t subscribe_id) |
Function to send a UNSUBSCRIBE request. | |
int | imquic_moq_subscribe_announces (imquic_connection *conn, imquic_moq_namespace *tns, imquic_moq_auth_info *auth) |
Function to send a SUBSCRIBE_ANNOUNCES request. | |
int | imquic_moq_accept_subscribe_announces (imquic_connection *conn, imquic_moq_namespace *tns) |
Function to accept an incoming SUBSCRIBE_ANNOUNCES request. | |
int | imquic_moq_reject_subscribe_announces (imquic_connection *conn, imquic_moq_namespace *tns, int error_code, const char *reason) |
Function to reject an incoming SUBSCRIBE_ANNOUNCES request. | |
int | imquic_moq_unsubscribe_announces (imquic_connection *conn, imquic_moq_namespace *tns) |
Function to send a UNSUBSCRIBE_ANNOUNCES request. | |
int | imquic_moq_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) |
Function to send a FETCH request. | |
int | imquic_moq_accept_fetch (imquic_connection *conn, uint64_t subscribe_id, gboolean descending, imquic_moq_position *largest) |
Function to accept an incoming FETCH request. | |
int | imquic_moq_reject_fetch (imquic_connection *conn, uint64_t subscribe_id, int error_code, const char *reason) |
Function to reject an incoming FETCH request. | |
int | imquic_moq_cancel_fetch (imquic_connection *conn, uint64_t subscribe_id) |
Function to send a FETCH_CANCEL request. | |
int | imquic_moq_send_object (imquic_connection *conn, imquic_moq_object *object) |
Function to send a MoQ object. | |
imquic MoQ public interface (headers)
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.
typedef struct imquic_moq_auth_info imquic_moq_auth_info |
MoQ Auth Info.
typedef enum imquic_moq_delivery imquic_moq_delivery |
Ways of sending objects.
typedef struct imquic_moq_fetch_range imquic_moq_fetch_range |
MoQ FETCH range (from where to where)
typedef struct imquic_moq_name imquic_moq_name |
MoQ Track Name.
typedef struct imquic_moq_namespace imquic_moq_namespace |
MoQ Track Namespace.
typedef struct imquic_moq_object imquic_moq_object |
MoQ Object.
typedef enum imquic_moq_object_status imquic_moq_object_status |
MoQ Object status.
typedef struct imquic_moq_position imquic_moq_position |
MoQ Group/Object couple (for ranges)
typedef enum imquic_moq_role imquic_moq_role |
Roles that can be specified once connected.
typedef enum imquic_moq_version imquic_moq_version |
Versions that can be negotiated.
enum imquic_moq_delivery |
Ways of sending objects.
enum imquic_moq_role |
enum imquic_moq_version |
Versions that can be negotiated.
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).
[in] | name | The endpoint name (if NULL, a default value will be set) |
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).
[in] | name | The endpoint name (if NULL, a default value will be set) |
int imquic_moq_accept_announce | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns ) |
Function to accept an incoming ANNOUNCE
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace to accept |
int imquic_moq_accept_fetch | ( | imquic_connection * | conn, |
uint64_t | subscribe_id, | ||
gboolean | descending, | ||
imquic_moq_position * | largest ) |
Function to accept an incoming FETCH
request.
conn | The imquic_connection to send the request on |
subscribe_id | The unique subscribe_id value associated to the subscription to accept |
descending | Whether objects will be delivered in descending group order |
largest | The largest group/object IDs |
int imquic_moq_accept_subscribe | ( | imquic_connection * | conn, |
uint64_t | subscribe_id, | ||
uint64_t | expires, | ||
gboolean | descending ) |
Function to accept an incoming SUBSCRIBE
request.
conn | The imquic_connection to send the request on |
subscribe_id | The unique subscribe_id value associated to the subscription to accept |
expires | Value of expires to send back |
descending | Whether objects will be delivered in descending group order |
int imquic_moq_accept_subscribe_announces | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns ) |
Function to accept an incoming SUBSCRIBE_ANNOUNCES
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace to accept notifications for |
int imquic_moq_announce | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns ) |
Function to send an ANNOUNCE
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace to announce |
int imquic_moq_cancel_fetch | ( | imquic_connection * | conn, |
uint64_t | subscribe_id ) |
Function to send a FETCH_CANCEL
request.
conn | The imquic_connection to send the request on |
subscribe_id | The unique subscribe_id value associated to the subscription to cancel_fetch from |
const char * imquic_moq_delivery_str | ( | imquic_moq_delivery | type | ) |
Helper function to serialize to string the name of a imquic_moq_delivery property.
type | The imquic_moq_delivery property |
int imquic_moq_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 ) |
Function to send a FETCH
request.
conn | The imquic_connection to send the request on |
subscribe_id | A unique numeric identifier to associate to this subscription |
tns | The imquic_moq_namespace namespace the track to fetch to belongs to |
tn | The imquic_moq_name track name to fetch to |
descending | Whether objects should be fetched in descending group order |
range | The range of groups/objects to fetch |
auth | The imquic_moq_auth_info authentication info, if needed |
imquic_moq_role imquic_moq_get_role | ( | imquic_connection * | conn | ) |
Helper function to get the MoQ role associated with a connection.
conn | The imquic_connection to query |
imquic_moq_version imquic_moq_get_version | ( | imquic_connection * | conn | ) |
Helper function to get the MoQ version associated with a connection.
conn | The imquic_connection to query |
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.
status | The imquic_moq_object_status property |
int imquic_moq_reject_announce | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns, | ||
int | error_code, | ||
const char * | reason ) |
Function to reject an incoming ANNOUNCE
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace to reject |
error_code | The error code to send back |
reason | A string representation of the error, if needed |
int imquic_moq_reject_fetch | ( | imquic_connection * | conn, |
uint64_t | subscribe_id, | ||
int | error_code, | ||
const char * | reason ) |
Function to reject an incoming FETCH
request.
conn | The imquic_connection to send the request on |
subscribe_id | The unique subscribe_id value associated to the subscription to reject |
error_code | The error code to send back |
reason | A string representation of the error, if needed |
int imquic_moq_reject_subscribe | ( | imquic_connection * | conn, |
uint64_t | subscribe_id, | ||
int | error_code, | ||
const char * | reason, | ||
uint64_t | track_alias ) |
Function to reject an incoming SUBSCRIBE
request.
conn | The imquic_connection to send the request on |
subscribe_id | The unique subscribe_id value associated to the subscription to reject |
error_code | The error code to send back |
reason | A string representation of the error, if needed |
track_alias | The unique track_alias value associated to the subscription to reject |
int imquic_moq_reject_subscribe_announces | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns, | ||
int | error_code, | ||
const char * | reason ) |
Function to reject an incoming SUBSCRIBE_ANNOUNCES
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace to reject notifications for |
error_code | The error code to send back |
reason | A string representation of the error, if needed |
const char * imquic_moq_role_str | ( | imquic_moq_role | role | ) |
Helper function to serialize to string the name of a imquic_moq_role property.
role | The imquic_moq_role property |
int imquic_moq_send_object | ( | imquic_connection * | conn, |
imquic_moq_object * | object ) |
Function to send a MoQ object.
end_of_stream
property to TRUE
in the object. There's no need to do that when using OBJECT_STREAM
or OBJECT_DATAGRAM
. You can also close the stream when you don't have any object to send: just set the relevant properties (e.g., subscribe_id, group_id and subgroup_id) without any payload, and the stack will find the right stream to close it. conn | The imquic_connection to send the object on |
object | The imquic_moq_object object to send, including all relevant identifiers and the payload |
int imquic_moq_set_max_subscribe_id | ( | imquic_connection * | conn, |
uint64_t | max_subscribe_id ) |
Helper function to set the Maximum Subscribe ID a subscriber can send.
MAX_SUBSCRIBE_ID
request conn | The imquic_connection to update |
max_subscribe_id | The Maximum Subscribe ID to enforce |
int imquic_moq_set_role | ( | imquic_connection * | conn, |
imquic_moq_role | role ) |
Method to set the MoQ role on a connection. Must be done as soon as the connection is established, and before sending any MoQ message. A good place to do that is the callback fired when a new connection is available.
conn | The imquic_connection to set the role on |
role | The imquic_moq_role to take |
int imquic_moq_set_version | ( | imquic_connection * | conn, |
imquic_moq_version | version ) |
Method to set the MoQ version on a connection. Must be done as soon as the connection is established, and before sending any MoQ message. A good place to do that is the callback fired when a new connection is available.
conn | The imquic_connection to set the version on |
version | The imquic_moq_version to use/offer |
int imquic_moq_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 ) |
Function to send a SUBSCRIBE
request.
conn | The imquic_connection to send the request on |
subscribe_id | A unique numeric identifier to associate to this subscription |
track_alias | A unique numeric identifier to associate to the track in this subscription |
tns | The imquic_moq_namespace namespace the track to subscribe to belongs to |
tn | The imquic_moq_name track name to subscribe to |
auth | The imquic_moq_auth_info authentication info, if needed |
int imquic_moq_subscribe_announces | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns, | ||
imquic_moq_auth_info * | auth ) |
Function to send a SUBSCRIBE_ANNOUNCES
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace the track to subscribe to belongs to |
auth | The imquic_moq_auth_info authentication info, if needed |
int imquic_moq_unannounce | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns ) |
Function to send an UNANNOUNCE
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace to unannounce |
int imquic_moq_unsubscribe | ( | imquic_connection * | conn, |
uint64_t | subscribe_id ) |
Function to send a UNSUBSCRIBE
request.
conn | The imquic_connection to send the request on |
subscribe_id | The unique subscribe_id value associated to the subscription to unsubscribe from |
int imquic_moq_unsubscribe_announces | ( | imquic_connection * | conn, |
imquic_moq_namespace * | tns ) |
Function to send a UNSUBSCRIBE_ANNOUNCES
request.
conn | The imquic_connection to send the request on |
tns | The imquic_moq_namespace namespace to unsubscribe notifications from |
const char * imquic_moq_version_str | ( | imquic_moq_version | version | ) |
Helper function to serialize to string the name of a imquic_moq_version property.
version | The imquic_moq_version property |
void imquic_set_announce_accepted_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns) | announce_accepted ) |
Configure the callback function to be notified when an ANNOUNCE
we previously sent was accepted.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
announce_accepted | Pointer to the function that will fire when an ANNOUNCE is accepted |
void imquic_set_announce_error_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns, int error_code, const char *reason) | announce_error ) |
Configure the callback function to be notified when an ANNOUNCE
we previously sent was rejected with an error.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
announce_error | Pointer to the function that will fire when an ANNOUNCE is rejected |
void imquic_set_fetch_accepted_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id, gboolean descending, imquic_moq_position *largest) | fetch_accepted ) |
Configure the callback function to be notified when an FETCH
we previously sent was accepted.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
fetch_accepted | Pointer to the function that will fire when an FETCH is accepted |
void imquic_set_fetch_error_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id, int error_code, const char *reason) | fetch_error ) |
Configure the callback function to be notified when an FETCH
we previously sent was rejected with an error.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
fetch_error | Pointer to the function that will fire when an FETCH is rejected |
void imquic_set_incoming_announce_cancel_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns) | incoming_announce_cancel ) |
Configure the callback function to be notified when there's an incoming ANNOUNCE_CANCEL
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_announce_cancel | Pointer to the function that will handle the incoming ANNOUNCE_CANCEL |
void imquic_set_incoming_announce_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns) | incoming_announce ) |
Configure the callback function to be notified when there's an incoming ANNOUNCE
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_announce | Pointer to the function that will handle the incoming ANNOUNCE |
void imquic_set_incoming_fetch_cancel_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id) | incoming_fetch_cancel ) |
Configure the callback function to be notified when there's an incoming FETCH_CANCEL
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_fetch_cancel | Pointer to the function that will handle the incoming FETCH_CANCEL |
void imquic_set_incoming_fetch_cb | ( | imquic_endpoint * | endpoint, |
void(*)(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) | incoming_fetch ) |
Configure the callback function to be notified when there's an incoming FETCH
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_fetch | Pointer to the function that will handle the incoming FETCH |
void imquic_set_incoming_goaway_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, const char *uri) | incoming_goaway ) |
Configure the callback function to be notified when there's an incoming GOAWAY
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_goaway | Pointer to the function that will handle the incoming GOAWAY |
void imquic_set_incoming_object_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_object *object) | incoming_object ) |
Configure the callback function to be notified when there's an incoming MoQ object, independently of how it was multiplexed on the wire.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_object | Pointer to the function that will handle the incoming MoQ object |
void imquic_set_incoming_subscribe_announces_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns, imquic_moq_auth_info *auth) | incoming_subscribe_announces ) |
Configure the callback function to be notified when there's an incoming SUBSCRIBE_ANNOUNCES
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_subscribe_announces | Pointer to the function that will handle the incoming SUBSCRIBE_ANNOUNCES |
void imquic_set_incoming_subscribe_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id, uint64_t track_alias, imquic_moq_namespace *tns, imquic_moq_name *tn, imquic_moq_auth_info *auth) | incoming_subscribe ) |
Configure the callback function to be notified when there's an incoming SUBSCRIBE
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_subscribe | Pointer to the function that will handle the incoming SUBSCRIBE |
void imquic_set_incoming_unannounce_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns) | incoming_unannounce ) |
Configure the callback function to be notified when there's an incoming UNANNOUNCE
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_unannounce | Pointer to the function that will handle the incoming UNANNOUNCE |
void imquic_set_incoming_unsubscribe_announces_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns) | incoming_unsubscribe_announces ) |
Configure the callback function to be notified when there's an incoming UNSUBSCRIBE_ANNOUNCES
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_unsubscribe_announces | Pointer to the function that will handle the incoming UNSUBSCRIBE_ANNOUNCES |
void imquic_set_incoming_unsubscribe_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id) | incoming_unsubscribe ) |
Configure the callback function to be notified when there's an incoming UNSUBSCRIBE
request.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
incoming_unsubscribe | Pointer to the function that will handle the incoming UNSUBSCRIBE |
void imquic_set_moq_connection_gone_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn) | moq_connection_gone ) |
Configure the callback function to be notified when an existing MoQ connection handled by this endpoint has been closed/shut down.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
moq_connection_gone | Pointer to the function that will be invoked when a MoQ connection is gone |
void imquic_set_moq_ready_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn) | moq_ready ) |
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.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
moq_ready | Pointer to the function that will be invoked when MoQ is ready to be used |
void imquic_set_new_moq_connection_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, void *user_data) | new_moq_connection ) |
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.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
new_moq_connection | Pointer to the function that will be invoked on the new MoQ connection |
void imquic_set_subscribe_accepted_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id, uint64_t expires, gboolean descending) | subscribe_accepted ) |
Configure the callback function to be notified when an SUBSCRIBE
we previously sent was accepted.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
subscribe_accepted | Pointer to the function that will fire when an SUBSCRIBE is accepted |
void imquic_set_subscribe_announces_accepted_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns) | subscribe_announces_accepted ) |
Configure the callback function to be notified when an SUBSCRIBE_ANNOUNCES
we previously sent was accepted.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
subscribe_announces_accepted | Pointer to the function that will fire when an SUBSCRIBE_ANNOUNCES is accepted |
void imquic_set_subscribe_announces_error_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, imquic_moq_namespace *tns, int error_code, const char *reason) | subscribe_announces_error ) |
Configure the callback function to be notified when an SUBSCRIBE_ANNOUNCES
we previously sent was rejected with an error.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
subscribe_announces_error | Pointer to the function that will fire when an SUBSCRIBE_ANNOUNCES is rejected |
void imquic_set_subscribe_done_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id, int status_code, const char *reason) | subscribe_done ) |
Configure the callback function to be notified when an SUBSCRIBE
we previously sent is now done.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
subscribe_done | Pointer to the function that will fire when an SUBSCRIBE is done |
void imquic_set_subscribe_error_cb | ( | imquic_endpoint * | endpoint, |
void(*)(imquic_connection *conn, uint64_t subscribe_id, int error_code, const char *reason, uint64_t track_alias) | subscribe_error ) |
Configure the callback function to be notified when an SUBSCRIBE
we previously sent was rejected with an error.
endpoint | The imquic_endpoint (imquic_server or imquic_client) to configure |
subscribe_error | Pointer to the function that will fire when an SUBSCRIBE is rejected |