Loading...
Searching...
No Matches
moq.h
Go to the documentation of this file.
1
294
295#ifndef IMQUIC_MOQ_H
296#define IMQUIC_MOQ_H
297
298#include "imquic.h"
299
303
304typedef enum imquic_moq_version {
305 /* Base */
307 /* Draft version -16 */
310 /* Draft version -17 */
312 /* Draft version -18 */
315 /* Any version starting from v15: for client, it means offer all supported versions;
316 * for servers, it means accept the first supported offered version */
322const char *imquic_moq_version_str(imquic_moq_version version);
327
346const char *imquic_moq_namespace_str(imquic_moq_namespace *tns, char *buffer, size_t blen, gboolean tuple);
369gboolean imquic_moq_namespace_is_valid(imquic_moq_namespace *tns, gboolean fail_if_empty, uint64_t *tns_num);
375
377typedef struct imquic_moq_track {
379 uint8_t *buffer;
381 size_t length;
383/* Helper to stringify a track name
384 * @param[in] tn The track name to stringify
385 * @param[out] buffer The buffer to write the string to
386 * @param[in] blen The size of the output buffer
387 * @returns A pointer to the output buffer, if successful, or NULL otherwise */
388const char *imquic_moq_track_str(imquic_moq_track *tn, char *buffer, size_t blen);
408
411typedef struct imquic_moq_redirect {
412 /* Connect URI */
414 /* Track Namespace */
416 /* Track Name */
419
430
442
448
456
466
478
556
570
584
589typedef struct imquic_moq_property {
591 uint32_t id;
594 union {
595 uint64_t number;
596 struct imquic_moq_property_data {
597 uint64_t length;
598 uint8_t *buffer;
602
607 /* Object Delivery Timeout (added in v18) */
609 /* Delivery Timeout (deprecated in v18) */
611 /* Max Cache Duration */
613 /* Subgroup Delivery Timeout (added in v18) */
615 /* Default Publisher Priority */
617 /* Default Group Order */
619 /* Dynamic Groups */
621 /* Prior Group ID Gap */
623 /* Prior Object ID Gap */
625 /* Immutable Properties */
633
667
671
686
714int imquic_moq_parse_auth_token(imquic_moq_version version, uint8_t *bytes, size_t blen, imquic_moq_auth_token *token);
721size_t imquic_moq_build_auth_token(imquic_moq_version version, imquic_moq_auth_token *token, uint8_t *bytes, size_t blen);
723
724
728
759
788
806
825
829
860imquic_server *imquic_create_moq_server(const char *name, ...);
895imquic_client *imquic_create_moq_client(const char *name, ...);
896
908 void (* new_moq_connection)(imquic_connection *conn, void *user_data));
918 uint64_t (* incoming_moq_connection)(imquic_connection *conn, uint8_t *auth, size_t authlen));
925 void (* moq_ready)(imquic_connection *conn));
931 void (* incoming_publish_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_request_parameters *parameters));
941 void (* incoming_publish_namespace_cancel)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason));
947 void (* publish_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters));
953 void (* publish_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
954 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
964 void (* publish_namespace_done)(imquic_connection *conn, uint64_t request_id));
970 void (* incoming_publish)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn,
971 uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties));
977 void (* publish_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters));
983 void (* publish_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
984 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
990 void (* incoming_subscribe)(imquic_connection *conn, uint64_t request_id,
997 void (* subscribe_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties));
1003 void (* subscribe_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
1004 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
1010 void (* request_updated)(imquic_connection *conn, uint64_t request_id, uint64_t sub_request_id, imquic_moq_request_parameters *parameters));
1016 void (* request_update_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters));
1022 void (* request_update_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
1023 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
1029 void (* publish_done)(imquic_connection *conn, uint64_t request_id, imquic_moq_pub_done_code status_code, uint64_t streams_count, const char *reason));
1038 void (* incoming_unsubscribe)(imquic_connection *conn, uint64_t request_id));
1045 void (* requests_blocked)(imquic_connection *conn, uint64_t max_request_id));
1051 void (* incoming_subscribe_namespace)(imquic_connection *conn, uint64_t request_id,
1058 void (* subscribe_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters));
1064 void (* subscribe_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
1065 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
1074 void (* incoming_unsubscribe_namespace)(imquic_connection *conn, uint64_t request_id));
1080 void (* incoming_subscribe_tracks)(imquic_connection *conn, uint64_t request_id,
1087 void (* subscribe_tracks_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters));
1093 void (* subscribe_tracks_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
1094 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
1103 void (* incoming_unsubscribe_tracks)(imquic_connection *conn, uint64_t request_id));
1109 void (* incoming_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns));
1115 void (* incoming_namespace_done)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns));
1121 void (* incoming_publish_blocked)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn));
1127 void (* incoming_standalone_fetch)(imquic_connection *conn, uint64_t request_id,
1134 void (* incoming_joining_fetch)(imquic_connection *conn, uint64_t request_id, uint64_t joining_request_id,
1135 gboolean absolute, uint64_t joining_start, imquic_moq_request_parameters *parameters));
1144 void (* incoming_fetch_cancel)(imquic_connection *conn, uint64_t request_id));
1150 void (* fetch_accepted)(imquic_connection *conn, uint64_t request_id,
1151 imquic_moq_location *largest, imquic_moq_request_parameters *parameters, GList *track_properties));
1157 void (* fetch_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
1158 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
1164 void (* incoming_track_status)(imquic_connection *conn, uint64_t request_id,
1171 void (* track_status_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters, GList *track_properties));
1177 void (* track_status_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code,
1178 const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect));
1184 void (* incoming_object)(imquic_connection *conn, imquic_moq_object *object));
1190 void (* incoming_goaway)(imquic_connection *conn, const char *uri, uint64_t timeout));
1196 void (* incoming_request_goaway)(imquic_connection *conn, uint64_t request_id, const char *uri, uint64_t timeout));
1203 void (* moq_connection_gone)(imquic_connection *conn, uint64_t error_code, const char *reason));
1205
1217int imquic_moq_set_connection_auth(imquic_connection *conn, uint8_t *auth, size_t authlen);
1218
1228int imquic_moq_set_max_request_id(imquic_connection *conn, uint64_t max_request_id);
1229
1234
1242
1246/* Namespaces and subscriptions */
1261 imquic_moq_request_parameters *parameters);
1271 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1287 uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn,
1288 uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties);
1303int imquic_moq_reject_publish(imquic_connection *conn, uint64_t request_id,
1304 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1312int imquic_moq_subscribe(imquic_connection *conn, uint64_t request_id,
1321int imquic_moq_accept_subscribe(imquic_connection *conn, uint64_t request_id,
1322 uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties);
1331int imquic_moq_reject_subscribe(imquic_connection *conn, uint64_t request_id,
1332 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1339int imquic_moq_update_request(imquic_connection *conn, uint64_t request_id,
1340 uint64_t sub_request_id, imquic_moq_request_parameters *parameters);
1347 imquic_moq_request_parameters *parameters);
1357 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1365int imquic_moq_publish_done(imquic_connection *conn, uint64_t request_id,
1366 imquic_moq_pub_done_code status_code, const char *reason);
1371int imquic_moq_unsubscribe(imquic_connection *conn, uint64_t request_id);
1387 imquic_moq_request_parameters *parameters);
1397 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1411int imquic_moq_subscribe_tracks(imquic_connection *conn, uint64_t request_id,
1419 imquic_moq_request_parameters *parameters);
1429 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1436int imquic_moq_unsubscribe_tracks(imquic_connection *conn, uint64_t request_id);
1477 uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn,
1489 uint64_t request_id, uint64_t joining_request_id,
1490 gboolean absolute, uint64_t joining_start, imquic_moq_request_parameters *parameters);
1498int imquic_moq_accept_fetch(imquic_connection *conn, uint64_t request_id,
1499 imquic_moq_location *largest, imquic_moq_request_parameters *parameters, GList *track_properties);
1508int imquic_moq_reject_fetch(imquic_connection *conn, uint64_t request_id,
1509 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1515int imquic_moq_cancel_fetch(imquic_connection *conn, uint64_t request_id);
1523int imquic_moq_track_status(imquic_connection *conn, uint64_t request_id,
1532 imquic_moq_request_parameters *parameters, GList *track_properties);
1542 imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect);
1564int imquic_moq_send_padding(imquic_connection *conn, size_t padding, gboolean datagram);
1574int imquic_moq_goaway(imquic_connection *conn, const char *uri, uint64_t timeout);
1581int imquic_moq_request_goaway(imquic_connection *conn, uint64_t request_id, const char *uri, uint64_t timeout);
1583
1584#endif
imquic public interface (headers)
struct imquic_network_endpoint imquic_client
Definition imquic.h:182
struct imquic_network_endpoint imquic_endpoint
Definition imquic.h:183
struct imquic_network_endpoint imquic_server
Definition imquic.h:181
struct imquic_connection imquic_connection
Definition imquic.h:180
int imquic_moq_publish_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_request_parameters *parameters)
Function to send a PUBLISH_NAMESPACE request.
void imquic_moq_request_parameters_init_defaults(imquic_moq_request_parameters *parameters)
Helper method to initialize some defaults values (where applicable) for the supported parameters.
void imquic_set_incoming_subscribe_namespace_cb(imquic_endpoint *endpoint, void(*incoming_subscribe_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_subscribe_namespace_options subscribe_options, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming SUBSCRIBE_NAMESPACE request.
Definition imquic-moq.c:680
void imquic_set_publish_accepted_cb(imquic_endpoint *endpoint, void(*publish_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when a PUBLISH we previously sent was accepted.
Definition imquic-moq.c:555
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.
Definition imquic-moq.c:988
void imquic_set_publish_error_cb(imquic_endpoint *endpoint, void(*publish_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when a PUBLISH we previously sent was rejected with an...
Definition imquic-moq.c:566
void imquic_set_request_updated_cb(imquic_endpoint *endpoint, void(*request_updated)(imquic_connection *conn, uint64_t request_id, uint64_t sub_request_id, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when an update is received for a request (e....
Definition imquic-moq.c:613
void imquic_set_subscribe_namespace_error_cb(imquic_endpoint *endpoint, void(*subscribe_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when an SUBSCRIBE_NAMESPACE we previously sent was rej...
Definition imquic-moq.c:703
void imquic_set_incoming_publish_blocked_cb(imquic_endpoint *endpoint, void(*incoming_publish_blocked)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn))
Configure the callback function to be notified when there's an incoming PUBLISH_BLOCKED request.
Definition imquic-moq.c:794
void imquic_set_incoming_publish_cb(imquic_endpoint *endpoint, void(*incoming_publish)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties))
Configure the callback function to be notified when there's an incoming PUBLISH request.
Definition imquic-moq.c:543
void imquic_set_incoming_moq_connection_cb(imquic_endpoint *endpoint, uint64_t(*incoming_moq_connection)(imquic_connection *conn, uint8_t *auth, size_t authlen))
Configure the callback function to be notified, as a server, when a CLIENT_SETUP is received....
Definition imquic-moq.c:461
const char * imquic_moq_request_error_code_str(imquic_moq_request_error_code code)
Helper function to serialize to string the name of a imquic_moq_request_error_code value.
int imquic_moq_request_goaway(imquic_connection *conn, uint64_t request_id, const char *uri, uint64_t timeout)
Function to send a GOAWAY for an existing request.
imquic_moq_object_status
MoQ Object status.
Definition moq.h:572
@ IMQUIC_MOQ_END_OF_TRACK
End of track.
Definition moq.h:578
@ IMQUIC_MOQ_END_OF_GROUP
End of group.
Definition moq.h:576
@ IMQUIC_MOQ_NORMAL_OBJECT
Normal object.
Definition moq.h:574
void imquic_set_subscribe_tracks_accepted_cb(imquic_endpoint *endpoint, void(*subscribe_tracks_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when an SUBSCRIBE_TRACKS we previously sent was accept...
Definition imquic-moq.c:738
int imquic_moq_subscribe_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_subscribe_namespace_options subscribe_options, imquic_moq_request_parameters *parameters)
Function to send a SUBSCRIBE_NAMESPACE request.
void imquic_set_incoming_unsubscribe_tracks_cb(imquic_endpoint *endpoint, void(*incoming_unsubscribe_tracks)(imquic_connection *conn, uint64_t request_id))
Configure the callback function to be notified when there's an incoming UNSUBSCRIBE_TRACKS request.
Definition imquic-moq.c:761
const char * imquic_moq_pub_done_code_str(imquic_moq_pub_done_code code)
Helper function to serialize to string the name of a imquic_moq_pub_done_code value.
int imquic_moq_reject_request_update(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming REQUEST_UPDATE request.
int imquic_moq_reject_track_status(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming TRACK_STATUS request.
void imquic_set_incoming_request_goaway_cb(imquic_endpoint *endpoint, void(*incoming_request_goaway)(imquic_connection *conn, uint64_t request_id, const char *uri, uint64_t timeout))
Configure the callback function to be notified when there's an incoming GOAWAY request associated wit...
Definition imquic-moq.c:920
void imquic_set_track_status_accepted_cb(imquic_endpoint *endpoint, void(*track_status_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters, GList *track_properties))
Configure the callback function to be notified when a TRACK_STATUS we previously sent was accepted.
Definition imquic-moq.c:875
void imquic_set_publish_namespace_error_cb(imquic_endpoint *endpoint, void(*publish_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when an PUBLISH_NAMESPACE we previously sent was rejec...
Definition imquic-moq.c:520
void imquic_set_requests_blocked_cb(imquic_endpoint *endpoint, void(*requests_blocked)(imquic_connection *conn, uint64_t max_request_id))
Configure the callback function to be notified when there's an incoming REQUESTS_BLOCKED request.
Definition imquic-moq.c:669
void imquic_set_incoming_goaway_cb(imquic_endpoint *endpoint, void(*incoming_goaway)(imquic_connection *conn, const char *uri, uint64_t timeout))
Configure the callback function to be notified when there's an incoming GOAWAY request for the whole ...
Definition imquic-moq.c:909
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,...
Definition imquic-moq.c:898
imquic_moq_namespace * imquic_moq_namespace_duplicate(imquic_moq_namespace *tns)
Helper to duplicate a namespace.
Definition imquic-moq.c:331
void imquic_set_subscribe_namespace_accepted_cb(imquic_endpoint *endpoint, void(*subscribe_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when an SUBSCRIBE_NAMESPACE we previously sent was acc...
Definition imquic-moq.c:692
int imquic_moq_accept_subscribe(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties)
Function to accept an incoming SUBSCRIBE request.
int imquic_moq_subscribe_tracks(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_request_parameters *parameters)
Function to send a SUBSCRIBE_TRACKS request.
const char * imquic_moq_subscribe_namespace_options_str(imquic_moq_subscribe_namespace_options type)
Helper function to serialize to string the name of a imquic_moq_subscribe_namespace_options value.
int imquic_moq_reject_subscribe_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming SUBSCRIBE_NAMESPACE request.
void imquic_set_publish_namespace_done_cb(imquic_endpoint *endpoint, void(*publish_namespace_done)(imquic_connection *conn, uint64_t request_id))
Configure the callback function to be notified when there's an incoming PUBLISH_NAMESPACE_DONE reques...
Definition imquic-moq.c:532
int imquic_moq_publish_done(imquic_connection *conn, uint64_t request_id, imquic_moq_pub_done_code status_code, const char *reason)
Function to send a PUBLISH_DONE request.
imquic_moq_track * imquic_moq_track_duplicate(imquic_moq_track *tn)
Helper to duplicate a track name.
Definition imquic-moq.c:420
int imquic_moq_reject_fetch(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming FETCH request.
imquic_moq_filter_type
MoQ filter type, for subscriptions.
Definition moq.h:432
@ IMQUIC_MOQ_FILTER_NEXT_GROUP_START
Definition moq.h:433
@ IMQUIC_MOQ_FILTER_ABSOLUTE_RANGE
Definition moq.h:436
@ IMQUIC_MOQ_FILTER_LARGEST_OBJECT
Definition moq.h:434
@ IMQUIC_MOQ_FILTER_ABSOLUTE_START
Definition moq.h:435
int imquic_moq_publish_namespace_done(imquic_connection *conn, uint64_t request_id)
Function to send a PUBLISH_NAMESPACE_DONE request.
int imquic_moq_unsubscribe_tracks(imquic_connection *conn, uint64_t request_id)
Function to send a UNSUBSCRIBE_TRACKS request.
void imquic_set_incoming_subscribe_cb(imquic_endpoint *endpoint, void(*incoming_subscribe)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming SUBSCRIBE request.
Definition imquic-moq.c:578
int imquic_moq_unsubscribe_namespace(imquic_connection *conn, uint64_t request_id)
Function to send a UNSUBSCRIBE_NAMESPACE request.
int imquic_moq_goaway(imquic_connection *conn, const char *uri, uint64_t timeout)
Function to send a GOAWAY request for the whole connection.
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 establishe...
Definition imquic-moq.c:476
const char * imquic_moq_delivery_str(imquic_moq_delivery type)
Helper function to serialize to string the name of a imquic_moq_delivery property.
Definition imquic-moq.c:974
gboolean imquic_moq_namespace_is_valid(imquic_moq_namespace *tns, gboolean fail_if_empty, uint64_t *tns_num)
Helper check if a imquic_moq_namespace instance is valid.
Definition imquic-moq.c:356
uint64_t imquic_moq_get_next_request_id(imquic_connection *conn)
Helper function to get the next Request ID we can use.
void imquic_set_incoming_unsubscribe_namespace_cb(imquic_endpoint *endpoint, void(*incoming_unsubscribe_namespace)(imquic_connection *conn, uint64_t request_id))
Configure the callback function to be notified when there's an incoming UNSUBSCRIBE_NAMESPACE request...
Definition imquic-moq.c:715
const char * imquic_moq_group_order_str(imquic_moq_group_order type)
Helper function to serialize to string the name of a imquic_moq_group_order value.
const char * imquic_moq_auth_token_alias_type_str(imquic_moq_auth_token_alias_type type)
Helper function to serialize to string the name of a imquic_moq_auth_token_alias_type property.
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....
Definition imquic-moq.c:129
void imquic_set_request_update_error_cb(imquic_endpoint *endpoint, void(*request_update_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when a REQUEST_UPDATE we previously sent was rejected ...
Definition imquic-moq.c:635
void imquic_set_publish_namespace_accepted_cb(imquic_endpoint *endpoint, void(*publish_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when an PUBLISH_NAMESPACE we previously sent was accep...
Definition imquic-moq.c:509
int imquic_moq_cancel_fetch(imquic_connection *conn, uint64_t request_id)
Function to send a FETCH_CANCEL request (legacy) or close the stream associated with the FETCH subscr...
imquic_moq_reset_stream_code
RESET_STREAM error codes.
Definition moq.h:808
@ IMQUIC_MOQ_RESET_MALFORMED_TRACK
Definition moq.h:818
@ IMQUIC_MOQ_RESET_EXPIRED_AUTH_TOKEN
Definition moq.h:816
@ IMQUIC_MOQ_RESET_CANCELLED
Definition moq.h:810
@ IMQUIC_MOQ_RESET_UNKNOWN_OBJECT_STATUS
Definition moq.h:815
@ IMQUIC_MOQ_RESET_INTERNAL_ERROR
Definition moq.h:809
@ IMQUIC_MOQ_RESET_GOING_AWAY
Definition moq.h:813
@ IMQUIC_MOQ_RESET_EXCESSIVE_LOAD
Definition moq.h:817
@ IMQUIC_MOQ_RESET_SESSION_CLOSED
Definition moq.h:812
@ IMQUIC_MOQ_RESET_DELIVERY_TIMEOUT
Definition moq.h:811
@ IMQUIC_MOQ_RESET_TOO_FAR_BEHIND
Definition moq.h:814
int imquic_moq_standalone_fetch(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_location_range *range, imquic_moq_request_parameters *parameters)
Function to send a standalone FETCH request.
void imquic_set_publish_done_cb(imquic_endpoint *endpoint, void(*publish_done)(imquic_connection *conn, uint64_t request_id, imquic_moq_pub_done_code status_code, uint64_t streams_count, const char *reason))
Configure the callback function to be notified when a PUBLISH we received or a SUBSCRIBE we sent is n...
Definition imquic-moq.c:647
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....
Definition imquic-moq.c:21
int imquic_moq_parse_auth_token(imquic_moq_version version, uint8_t *bytes, size_t blen, imquic_moq_auth_token *token)
Helper mode to parse an auth token buffer to a imquic_moq_auth_token instance.
imquic_moq_request_error_code
Request error codes.
Definition moq.h:761
@ IMQUIC_MOQ_REQERR_PREFIX_OVERLAP
Definition moq.h:778
@ IMQUIC_MOQ_REQERR_MALFORMED_TRACK
Definition moq.h:773
@ IMQUIC_MOQ_REQERR_GOING_AWAY
Definition moq.h:768
@ IMQUIC_MOQ_REQERR_INTERNAL_ERROR
Definition moq.h:762
@ IMQUIC_MOQ_REQERR_REDIRECT
Definition moq.h:782
@ IMQUIC_MOQ_REQERR_DOES_NOT_EXIST
Definition moq.h:771
@ IMQUIC_MOQ_REQERR_INVALID_RANGE
Definition moq.h:772
@ IMQUIC_MOQ_REQERR_UNINTERESTED
Definition moq.h:776
@ IMQUIC_MOQ_REQERR_DUPLICATE_SUBSCRIPTION
Definition moq.h:774
@ IMQUIC_MOQ_REQERR_TIMEOUT
Definition moq.h:764
@ IMQUIC_MOQ_REQERR_UNSUPPORTED_EXTENSION
Definition moq.h:781
@ IMQUIC_MOQ_REQERR_EXCESSIVE_LOAD
Definition moq.h:769
@ IMQUIC_MOQ_REQERR_INVALID_JOINING_REQUEST_ID
Definition moq.h:780
@ IMQUIC_MOQ_REQERR_MALFORMED_AUTH_TOKEN
Definition moq.h:766
@ IMQUIC_MOQ_REQERR_EXPIRED_AUTH_TOKEN
Definition moq.h:767
@ IMQUIC_MOQ_REQERR_UNAUTHORIZED
Definition moq.h:763
@ IMQUIC_MOQ_REQERR_NOT_SUPPORTED
Definition moq.h:765
@ IMQUIC_MOQ_REQERR_NAMESPACE_TOO_LARGE
Definition moq.h:779
void imquic_set_moq_connection_gone_cb(imquic_endpoint *endpoint, void(*moq_connection_gone)(imquic_connection *conn, uint64_t error_code, const char *reason))
Configure the callback function to be notified when an existing MoQ connection handled by this endpoi...
Definition imquic-moq.c:931
void imquic_set_incoming_publish_namespace_cb(imquic_endpoint *endpoint, void(*incoming_publish_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming PUBLISH_NAMESPACE request.
Definition imquic-moq.c:487
int imquic_moq_reject_subscribe_tracks(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming SUBSCRIBE_TRACKS request.
void imquic_set_incoming_joining_fetch_cb(imquic_endpoint *endpoint, void(*incoming_joining_fetch)(imquic_connection *conn, uint64_t request_id, uint64_t joining_request_id, gboolean absolute, uint64_t joining_start, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming joining FETCH request.
Definition imquic-moq.c:817
imquic_moq_group_order
Group ordering for tracks.
Definition moq.h:421
@ IMQUIC_MOQ_ORDERING_DESCENDING
Definition moq.h:424
@ IMQUIC_MOQ_ORDERING_ASCENDING
Definition moq.h:423
@ IMQUIC_MOQ_ORDERING_ORIGINAL
Definition moq.h:422
const char * imquic_moq_namespace_str(imquic_moq_namespace *tns, char *buffer, size_t blen, gboolean tuple)
Helper to stringify a namespace (optionally the whole tuple)
Definition imquic-moq.c:261
int imquic_moq_unsubscribe(imquic_connection *conn, uint64_t request_id)
Function to send a UNSUBSCRIBE request.
int imquic_moq_notify_namespace_done(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Function to send a NAMESPACE_DONE request.
int imquic_moq_subscribe(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_request_parameters *parameters)
Function to send a SUBSCRIBE request.
imquic_moq_version imquic_moq_get_version(imquic_connection *conn)
Helper function to get the MoQ version associated with a connection.
int imquic_moq_send_object(imquic_connection *conn, imquic_moq_object *object)
Function to send a MoQ object.
int imquic_moq_accept_publish(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Function to accept an incoming PUBLISH request.
int imquic_moq_accept_track_status(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters, GList *track_properties)
Function to accept an incoming TRACK_STATUS request.
void imquic_set_fetch_error_cb(imquic_endpoint *endpoint, void(*fetch_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when an FETCH we previously sent was rejected with an ...
Definition imquic-moq.c:851
const char * imquic_moq_track_str(imquic_moq_track *tn, char *buffer, size_t blen)
Definition imquic-moq.c:391
void imquic_set_request_update_accepted_cb(imquic_endpoint *endpoint, void(*request_update_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when an OK is received for a REQUEST_UPDATE we previou...
Definition imquic-moq.c:624
imquic_moq_version
Versions that can be negotiated.
Definition moq.h:304
@ IMQUIC_MOQ_VERSION_MIN
Definition moq.h:308
@ IMQUIC_MOQ_VERSION_MAX
Definition moq.h:314
@ IMQUIC_MOQ_VERSION_16
Definition moq.h:309
@ IMQUIC_MOQ_VERSION_18
Definition moq.h:313
@ IMQUIC_MOQ_VERSION_17
Definition moq.h:311
@ IMQUIC_MOQ_VERSION_BASE
Definition moq.h:306
@ IMQUIC_MOQ_VERSION_ANY
Definition moq.h:317
const char * imquic_moq_version_str(imquic_moq_version version)
Helper function to serialize to string the name of a imquic_moq_version property.
Definition imquic-moq.c:943
imquic_moq_auth_token_alias_type
MoQ Authorization Token Alias Type.
Definition moq.h:672
@ IMQUIC_MOQ_AUTH_TOKEN_DELETE
DELETE.
Definition moq.h:674
@ IMQUIC_MOQ_AUTH_TOKEN_USE_ALIAS
USE_ALIAS.
Definition moq.h:678
@ IMQUIC_MOQ_AUTH_TOKEN_USE_VALUE
USE_VALUE.
Definition moq.h:680
@ IMQUIC_MOQ_AUTH_TOKEN_REGISTER
REGISTER.
Definition moq.h:676
int imquic_moq_accept_publish_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Function to accept an incoming PUBLISH_NAMESPACE request.
int imquic_moq_accept_subscribe_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Function to accept an incoming SUBSCRIBE_NAMESPACE request.
void imquic_set_subscribe_accepted_cb(imquic_endpoint *endpoint, void(*subscribe_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties))
Configure the callback function to be notified when a SUBSCRIBE we previously sent was accepted.
Definition imquic-moq.c:590
int imquic_moq_notify_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Function to send a NAMESPACE request.
int imquic_moq_send_padding(imquic_connection *conn, size_t padding, gboolean datagram)
Function to send padding via MoQ.
imquic_moq_property_type
Known MoQ Property types.
Definition moq.h:606
@ IMQUIC_MOQ_PROPERTY_DYNAMIC_GROUPS
Definition moq.h:620
@ IMQUIC_MOQ_PROPERTY_PRIOR_GROUP_ID_GAP
Definition moq.h:622
@ IMQUIC_MOQ_PROPERTY_DELIVERY_TIMEOUT
Definition moq.h:610
@ IMQUIC_MOQ_PROPERTY_MAX_CACHE_DURATION
Definition moq.h:612
@ IMQUIC_MOQ_PROPERTY_IMMUTABLE_PROPERTIES
Definition moq.h:626
@ IMQUIC_MOQ_PROPERTY_OBJECT_DELIVERY_TIMEOUT
Definition moq.h:608
@ IMQUIC_MOQ_PROPERTY_SUBGROUP_DELIVERY_TIMEOUT
Definition moq.h:614
@ IMQUIC_MOQ_PROPERTY_DEFAULT_PUBLISHER_PRIORITY
Definition moq.h:616
@ IMQUIC_MOQ_PROPERTY_DEFAULT_GROUP_ORDER
Definition moq.h:618
@ IMQUIC_MOQ_PROPERTY_PRIOR_OBJECT_ID_GAP
Definition moq.h:624
int imquic_moq_set_max_request_id(imquic_connection *conn, uint64_t max_request_id)
Helper function to set the Maximum Request ID a subscriber can send.
int imquic_moq_joining_fetch(imquic_connection *conn, uint64_t request_id, uint64_t joining_request_id, gboolean absolute, uint64_t joining_start, imquic_moq_request_parameters *parameters)
Function to send a joining FETCH request.
imquic_moq_error_code
Generic error codes.
Definition moq.h:729
@ IMQUIC_MOQ_DUPLICATE_AUTH_TOKEN_ALIAS
Definition moq.h:745
@ IMQUIC_MOQ_CONTROL_MESSAGE_TIMEOUT
Definition moq.h:742
@ IMQUIC_MOQ_EXPIRED_AUTH_TOKEN
Definition moq.h:749
@ IMQUIC_MOQ_INTERNAL_ERROR
Definition moq.h:731
@ IMQUIC_MOQ_KEYVALUE_FORMATTING_ERROR
Definition moq.h:736
@ IMQUIC_MOQ_MALFORMED_AUTHORITY
Definition moq.h:751
@ IMQUIC_MOQ_VERSION_NEGOTIATION_FAILED
Definition moq.h:746
@ IMQUIC_MOQ_INVALID_REQUEST_ID
Definition moq.h:734
@ IMQUIC_MOQ_INVALID_AUTHORITY
Definition moq.h:750
@ IMQUIC_MOQ_INVALID_PATH
Definition moq.h:739
@ IMQUIC_MOQ_DATA_STREAM_TIMEOUT
Definition moq.h:743
@ IMQUIC_MOQ_MALFORMED_AUTH_TOKEN
Definition moq.h:747
@ IMQUIC_MOQ_AUTH_TOKEN_CACHE_OVERFLOW
Definition moq.h:744
@ IMQUIC_MOQ_PROTOCOL_VIOLATION
Definition moq.h:733
@ IMQUIC_MOQ_DUPLICATE_TRACK_ALIAS
Definition moq.h:735
@ IMQUIC_MOQ_UNKNOWN_ERROR
Definition moq.h:753
@ IMQUIC_MOQ_UNAUTHORIZED
Definition moq.h:732
@ IMQUIC_MOQ_MALFORMED_PATH
Definition moq.h:740
@ IMQUIC_MOQ_NO_ERROR
Definition moq.h:730
@ IMQUIC_MOQ_GOAWAY_TIMEOUT
Definition moq.h:741
@ IMQUIC_MOQ_INVALID_REQUIRED_REQUEST_ID
Definition moq.h:737
@ IMQUIC_MOQ_UNKNOWN_AUTH_TOKEN_ALIAS
Definition moq.h:748
@ IMQUIC_MOQ_TOO_MANY_REQUESTS
Definition moq.h:738
int imquic_moq_reject_subscribe(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming SUBSCRIBE request.
size_t imquic_moq_build_auth_token(imquic_moq_version version, imquic_moq_auth_token *token, uint8_t *bytes, size_t blen)
Helper mode to craft an auth token buffer out of a imquic_moq_auth_token instance.
void imquic_set_incoming_publish_namespace_cancel_cb(imquic_endpoint *endpoint, void(*incoming_publish_namespace_cancel)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason))
Configure the callback function to be notified when there's an incoming PUBLISH_NAMESPACE_CANCEL requ...
Definition imquic-moq.c:498
int imquic_moq_accept_request_update(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Function to accept an incoming REQUEST_UPDATE request.
const char * imquic_moq_filter_type_str(imquic_moq_filter_type type)
Helper function to serialize to string the name of a imquic_moq_filter_type value.
void imquic_set_fetch_accepted_cb(imquic_endpoint *endpoint, void(*fetch_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_location *largest, imquic_moq_request_parameters *parameters, GList *track_properties))
Configure the callback function to be notified when an FETCH we previously sent was accepted.
Definition imquic-moq.c:840
const char * imquic_moq_get_remote_implementation(imquic_connection *conn)
Helper function to return the MoQ implementation name as a string, if provided by the peer of this co...
void imquic_moq_namespace_free(imquic_moq_namespace *tns)
Helper to free a imquic_moq_namespace instance.
Definition imquic-moq.c:380
int imquic_moq_reject_publish_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming PUBLISH_NAMESPACE request.
gboolean imquic_moq_track_equals(imquic_moq_track *first, imquic_moq_track *second)
Helper to check whether two track names are the sames.
Definition imquic-moq.c:406
void imquic_set_incoming_namespace_cb(imquic_endpoint *endpoint, void(*incoming_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns))
Configure the callback function to be notified when there's an incoming NAMESPACE request.
Definition imquic-moq.c:772
int imquic_moq_set_connection_auth(imquic_connection *conn, uint8_t *auth, size_t authlen)
Method to provide credentials, as a client, on a new connection. If credentials need to provided,...
gboolean imquic_moq_track_is_valid(imquic_moq_track *tn)
Helper check if a imquic_moq_track instance is valid.
Definition imquic-moq.c:432
void imquic_set_subscribe_error_cb(imquic_endpoint *endpoint, void(*subscribe_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when a SUBSCRIBE we previously sent was rejected with ...
Definition imquic-moq.c:601
int imquic_moq_notify_publish_blocked(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn)
Function to send a PUBLISH_BLOCKED request.
const char * imquic_moq_property_type_str(imquic_moq_version version, imquic_moq_property_type type)
Helper function to serialize to string the name of a imquic_moq_property_type value.
Definition imquic-moq.c:1002
void imquic_set_subscribe_tracks_error_cb(imquic_endpoint *endpoint, void(*subscribe_tracks_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when an SUBSCRIBE_TRACKS we previously sent was reject...
Definition imquic-moq.c:749
imquic_moq_subscribe_namespace_options
Subscribe options for namespaces.
Definition moq.h:469
@ IMQUIC_MOQ_WANT_PUBLISH
Definition moq.h:470
@ IMQUIC_MOQ_WANT_PUBLISH_AND_NAMESPACE
Definition moq.h:472
@ IMQUIC_MOQ_WANT_NAMESPACE
Definition moq.h:471
void imquic_set_incoming_fetch_cancel_cb(imquic_endpoint *endpoint, void(*incoming_fetch_cancel)(imquic_connection *conn, uint64_t request_id))
Configure the callback function to be notified when there's an incoming FETCH_CANCEL request.
Definition imquic-moq.c:829
imquic_moq_pub_done_code
Publish done codes.
Definition moq.h:790
@ IMQUIC_MOQ_PUBDONE_TRACK_ENDED
Definition moq.h:793
@ IMQUIC_MOQ_PUBDONE_UNAUTHORIZED
Definition moq.h:792
@ IMQUIC_MOQ_PUBDONE_EXPIRED
Definition moq.h:797
@ IMQUIC_MOQ_PUBDONE_GOING_AWAY
Definition moq.h:795
@ IMQUIC_MOQ_PUBDONE_EXCESSIVE_LOAD
Definition moq.h:799
@ IMQUIC_MOQ_PUBDONE_MALFORMED_TRACK
Definition moq.h:800
@ IMQUIC_MOQ_PUBDONE_INTERNAL_ERROR
Definition moq.h:791
@ IMQUIC_MOQ_PUBDONE_SUBSCRIPTION_ENDED
Definition moq.h:794
@ IMQUIC_MOQ_PUBDONE_TOO_FAR_BEHIND
Definition moq.h:796
@ IMQUIC_MOQ_PUBDONE_UPDATE_FAILED
Definition moq.h:798
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 QUIC connections on the configured endpoint....
Definition imquic-moq.c:450
void imquic_set_incoming_standalone_fetch_cb(imquic_endpoint *endpoint, void(*incoming_standalone_fetch)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_location_range *range, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming standalone FETCH request.
Definition imquic-moq.c:805
int imquic_moq_publish(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties)
Function to send a PUBLISH request.
const char * imquic_moq_reset_stream_code_str(imquic_moq_reset_stream_code code)
Helper function to serialize to string the name of a imquic_moq_reset_stream_code value.
int imquic_moq_accept_subscribe_tracks(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Function to accept an incoming SUBSCRIBE_TRACKS request.
int imquic_moq_reject_publish(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Function to reject an incoming PUBLISH request.
const char * imquic_moq_error_code_str(imquic_moq_error_code code)
Helper function to serialize to string the name of a imquic_moq_error_code value.
void imquic_set_incoming_unsubscribe_cb(imquic_endpoint *endpoint, void(*incoming_unsubscribe)(imquic_connection *conn, uint64_t request_id))
Configure the callback function to be notified when there's an incoming UNSUBSCRIBE request.
Definition imquic-moq.c:658
gboolean imquic_moq_namespace_contains(imquic_moq_namespace *parent, imquic_moq_namespace *child)
Helper to check whether a namespace is contained in another.
Definition imquic-moq.c:309
void imquic_moq_track_free(imquic_moq_track *tn)
Helper to free a imquic_moq_track instance.
Definition imquic-moq.c:442
int imquic_moq_requests_blocked(imquic_connection *conn)
Function to send a REQUESTS_BLOCKED request.
void imquic_set_incoming_subscribe_tracks_cb(imquic_endpoint *endpoint, void(*incoming_subscribe_tracks)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming SUBSCRIBE_TRACKS request.
Definition imquic-moq.c:726
void imquic_set_track_status_error_cb(imquic_endpoint *endpoint, void(*track_status_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect))
Configure the callback function to be notified when a TRACK_STATUS we previously sent was rejected wi...
Definition imquic-moq.c:886
int imquic_moq_accept_fetch(imquic_connection *conn, uint64_t request_id, imquic_moq_location *largest, imquic_moq_request_parameters *parameters, GList *track_properties)
Function to accept an incoming FETCH request.
imquic_moq_delivery
Ways of sending objects.
Definition moq.h:558
@ IMQUIC_MOQ_USE_FETCH
All fetched objects on the same STREAM.
Definition moq.h:564
@ IMQUIC_MOQ_USE_DATAGRAM
A single object on a DATAGRAM.
Definition moq.h:560
@ IMQUIC_MOQ_USE_SUBGROUP
All objects of the same subgroup on the same STREAM.
Definition moq.h:562
void imquic_set_incoming_track_status_cb(imquic_endpoint *endpoint, void(*incoming_track_status)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming TRACK_STATUS request.
Definition imquic-moq.c:863
int imquic_moq_track_status(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_request_parameters *parameters)
Function to send a TRACK_STATUS request.
void imquic_set_incoming_namespace_done_cb(imquic_endpoint *endpoint, void(*incoming_namespace_done)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns))
Configure the callback function to be notified when there's an incoming NAMESPACE_DONE request.
Definition imquic-moq.c:783
int imquic_moq_update_request(imquic_connection *conn, uint64_t request_id, uint64_t sub_request_id, imquic_moq_request_parameters *parameters)
Function to send a REQUEST_UPDATE request.
gboolean imquic_moq_namespace_equals(imquic_moq_namespace *first, imquic_moq_namespace *second)
Helper to check whether two namespaces are the sames.
Definition imquic-moq.c:289
Token value, if any.
Definition moq.h:700
MoQ Authorization Token.
Definition moq.h:688
imquic_moq_auth_token_alias_type alias_type
Alias type.
Definition moq.h:690
uint64_t token_alias
Token alias, if any.
Definition moq.h:694
gboolean token_type_set
Whether there is a token type.
Definition moq.h:696
uint64_t token_type
Token type, if any.
Definition moq.h:698
struct imquic_moq_auth_token::imquic_moq_auth_token_value token_value
gboolean token_alias_set
Whether there is a token alias.
Definition moq.h:692
MoQ location range (from where to where, e.g., for FETCH)
Definition moq.h:450
imquic_moq_location end
End group/object.
Definition moq.h:454
imquic_moq_location start
Start group/object.
Definition moq.h:452
MoQ Group/Object couple (for ranges)
Definition moq.h:444
uint64_t object
Definition moq.h:446
uint64_t group
Definition moq.h:445
MoQ Track Namespace.
Definition moq.h:329
size_t length
Size of the namespace data.
Definition moq.h:333
uint8_t * buffer
Namespace data (typically a non-null terminated string)
Definition moq.h:331
struct imquic_moq_namespace * next
Next namespace in this list, if this is a tuple.
Definition moq.h:335
MoQ Object.
Definition moq.h:638
gboolean first_of_subgroup
Whether the first object in the stream contains the first object in the subgroup (added in v18)
Definition moq.h:662
imquic_moq_delivery delivery
How to send this object (or how it was received)
Definition moq.h:660
size_t payload_len
Size of the MoQ object payload.
Definition moq.h:656
uint64_t subgroup_id
MoQ subgroup_id.
Definition moq.h:646
gboolean end_of_stream
Whether this signals the end of the stream.
Definition moq.h:664
GList * properties
MoQ properties, if any.
Definition moq.h:658
uint64_t group_id
MoQ group_id.
Definition moq.h:644
uint64_t object_id
MoQ object_id.
Definition moq.h:648
uint8_t * payload
MoQ object payload.
Definition moq.h:654
uint8_t priority
MoQ publisher priority.
Definition moq.h:652
uint64_t track_alias
MoQ track_alias.
Definition moq.h:642
imquic_moq_object_status object_status
MoQ object status.
Definition moq.h:650
uint64_t request_id
MoQ request_id.
Definition moq.h:640
MoQ Property.
Definition moq.h:589
uint32_t id
MoQ Property ID.
Definition moq.h:591
uint64_t length
Definition moq.h:597
union imquic_moq_property::@177124263055135035040370145357160103327167033353 value
Property value, which could be either a number (even property ID) or an octet of data with length (od...
uint64_t number
Definition moq.h:595
uint8_t * buffer
Definition moq.h:598
struct imquic_moq_property::@177124263055135035040370145357160103327167033353::imquic_moq_property_data data
MoQ Redirect Structure.
Definition moq.h:411
imquic_moq_namespace * track_namespace
Definition moq.h:415
char * connect_uri
Definition moq.h:413
imquic_moq_track * track_name
Definition moq.h:417
MoQ request parameters.
Definition moq.h:487
gboolean largest_object_set
Whether the LARGEST_OBJECT parameter is set.
Definition moq.h:531
gboolean subscription_filter_set
Whether the SUBSCRIPTION_FILTER parameter is set.
Definition moq.h:523
imquic_moq_namespace track_namespace_prefix[32]
Value of the TRACK_NAMESPACE_PREFIX parameter.
Definition moq.h:545
gboolean subgroup_delivery_timeout_set
Whether the SUBGROUP_DELIVERY_TIMEOUT parameter is set.
Definition moq.h:503
uint8_t subscriber_priority
Value of the SUBSCRIBER_PRIORITY parameter.
Definition moq.h:517
size_t auth_token_len
Size of the AUTHORIZATION_TOKEN parameter.
Definition moq.h:493
uint64_t object_delivery_timeout
Value of the OBJECT_DELIVERY_TIMEOUT parameter.
Definition moq.h:501
uint64_t new_group_request
Value of the NEW_GROUP_REQUEST parameter.
Definition moq.h:541
uint64_t expires
Value of the EXPIRES parameter.
Definition moq.h:529
uint64_t fill_timeout
Value of the FILL_TIMEOUT parameter.
Definition moq.h:509
gboolean auth_token_set
Whether the AUTHORIZATION_TOKEN parameter is set.
Definition moq.h:489
uint64_t delivery_timeout
Value of the DELIVERY_TIMEOUT parameter.
Definition moq.h:497
imquic_moq_location largest_object
Value of the LARGEST_OBJECT parameter.
Definition moq.h:533
imquic_moq_group_order group_order
Value of the GROUP_ORDER parameter.
Definition moq.h:521
gboolean object_delivery_timeout_set
Whether the OBJECT_DELIVERY_TIMEOUT parameter is set.
Definition moq.h:499
gboolean new_group_request_set
Whether the NEW_GROUP_REQUEST parameter is set.
Definition moq.h:539
gboolean subscriber_priority_set
Whether the SUBSCRIBER_PRIORITY parameter is set.
Definition moq.h:515
gboolean delivery_timeout_set
Whether the DELIVERY_TIMEOUT parameter is set.
Definition moq.h:495
uint64_t rendezvous_timeout
Value of the RENDEZVOUS_TIMEOUT parameter.
Definition moq.h:513
gboolean forward
Value of the FORWARD parameter.
Definition moq.h:537
uint8_t auth_token[256]
Value of the AUTHORIZATION_TOKEN parameter.
Definition moq.h:491
gboolean forward_set
Whether the FORWARD parameter is set.
Definition moq.h:535
gboolean expires_set
Whether the EXPIRES parameter is set.
Definition moq.h:527
gboolean track_namespace_prefix_set
Whether the TRACK_NAMESPACE_PREFIX parameter is set.
Definition moq.h:543
gboolean group_order_set
Whether the GROUP_ORDER parameter is set.
Definition moq.h:519
gboolean unknown
Whether there's unknown parameters.
Definition moq.h:548
gboolean rendezvous_timeout_set
Whether the RENDEZVOUS_TIMEOUT parameter is set.
Definition moq.h:511
gboolean fill_timeout_set
Whether the FILL_TIMEOUT parameter is set.
Definition moq.h:507
uint64_t subgroup_delivery_timeout
Value of the SUBGROUP_DELIVERY_TIMEOUT parameter.
Definition moq.h:505
imquic_moq_subscription_filter subscription_filter
Value of the SUBSCRIPTION_FILTER parameter.
Definition moq.h:525
MoQ subscription filter.
Definition moq.h:458
imquic_moq_location start_location
Start location (depending on filter type)
Definition moq.h:462
imquic_moq_filter_type type
Filter type.
Definition moq.h:460
uint64_t end_group
End group (depending on filter type)
Definition moq.h:464
MoQ Track Name.
Definition moq.h:377
uint8_t * buffer
Name data (typically a non-null terminated string)
Definition moq.h:379
size_t length
Size of the name data.
Definition moq.h:381