545 struct imquic_moq_object_extension_data {
843 uint64_t (* incoming_moq_connection)(
imquic_connection *conn, uint8_t *auth,
size_t authlen));
905 void (* incoming_subscribe)(
imquic_connection *conn, uint64_t request_id, uint64_t track_alias,
961 void (* incoming_subscribe_namespace)(
imquic_connection *conn, uint64_t request_id,
1005 void (* incoming_joining_fetch)(
imquic_connection *conn, uint64_t request_id, uint64_t joining_request_id,
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:609
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_name *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:676
const char * imquic_moq_track_str(imquic_moq_name *tn, char *buffer, size_t blen)
Definition imquic-moq.c:355
int imquic_moq_reject_subscribe(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t track_alias, uint64_t retry_interval)
Function to reject an incoming SUBSCRIBE request.
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:487
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:862
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:543
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)
Function to reject an incoming REQUEST_UPDATE request.
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))
Configure the callback function to be notified when an SUBSCRIBE_NAMESPACE we previously sent was rej...
Definition imquic-moq.c:632
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:394
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.
void imquic_set_publish_namespace_done_cb(imquic_endpoint *endpoint, void(*publish_namespace_done)(imquic_connection *conn, imquic_moq_namespace *tns))
Configure the callback function to be notified when there's an incoming PUBLISH_NAMESPACE_DONE reques...
Definition imquic-moq.c:464
int imquic_moq_publish_namespace_done(imquic_connection *conn, imquic_moq_namespace *tns)
Function to send a PUBLISH_NAMESPACE_DONE request.
imquic_moq_object_status
MoQ Object status.
Definition moq.h:519
@ IMQUIC_MOQ_END_OF_TRACK
End of track.
Definition moq.h:527
@ IMQUIC_MOQ_END_OF_GROUP
End of group.
Definition moq.h:525
@ IMQUIC_MOQ_OBJECT_DOESNT_EXIST
Object doesn't exist (deprecated in v16)
Definition moq.h:523
@ IMQUIC_MOQ_NORMAL_OBJECT
Normal object.
Definition moq.h:521
int imquic_moq_accept_fetch(imquic_connection *conn, uint64_t request_id, imquic_moq_location *largest, imquic_moq_request_parameters *parameters, GList *track_extensions)
Function to accept an incoming FETCH request.
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.
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_publish_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval)
Function to reject an incoming PUBLISH_NAMESPACE request.
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:598
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:767
imquic_moq_namespace * imquic_moq_namespace_duplicate(imquic_moq_namespace *tns)
Helper to duplicate a namespace.
Definition imquic-moq.c:319
void imquic_set_incoming_publish_namespace_cancel_cb(imquic_endpoint *endpoint, void(*incoming_publish_namespace_cancel)(imquic_connection *conn, imquic_moq_namespace *tns, 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:431
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:621
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_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_filter_type
MoQ filter type, for subscriptions.
Definition moq.h:378
@ IMQUIC_MOQ_FILTER_NEXT_GROUP_START
Definition moq.h:379
@ IMQUIC_MOQ_FILTER_ABSOLUTE_RANGE
Definition moq.h:382
@ IMQUIC_MOQ_FILTER_LARGEST_OBJECT
Definition moq.h:380
@ IMQUIC_MOQ_FILTER_ABSOLUTE_START
Definition moq.h:381
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:409
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.
Definition imquic-moq.c:778
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:848
uint64_t imquic_moq_get_next_request_id(imquic_connection *conn)
Helper function to get the next Request ID we can use.
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.
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_name *tn, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_extensions))
Configure the callback function to be notified when there's an incoming PUBLISH request.
Definition imquic-moq.c:475
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:125
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)
Function to reject an incoming PUBLISH request.
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:442
int imquic_moq_cancel_fetch(imquic_connection *conn, uint64_t request_id)
Function to send a FETCH_CANCEL request.
imquic_moq_reset_stream_code
RESET_STREAM error codes.
Definition moq.h:737
@ IMQUIC_MOQ_RESET_MALFORMED_TRACK
Definition moq.h:743
@ IMQUIC_MOQ_RESET_CANCELLED
Definition moq.h:739
@ IMQUIC_MOQ_RESET_UNKNOWN_OBJECT_STATUS
Definition moq.h:742
@ IMQUIC_MOQ_RESET_INTERNAL_ERROR
Definition moq.h:738
@ IMQUIC_MOQ_RESET_SESSION_CLOSED
Definition moq.h:741
@ IMQUIC_MOQ_RESET_DELIVERY_TIMEOUT
Definition moq.h:740
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:576
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
imquic_moq_request_error_code
Request error codes.
Definition moq.h:695
@ IMQUIC_MOQ_REQERR_PREFIX_OVERLAP
Definition moq.h:710
@ IMQUIC_MOQ_REQERR_MALFORMED_TRACK
Definition moq.h:705
@ IMQUIC_MOQ_REQERR_INTERNAL_ERROR
Definition moq.h:696
@ IMQUIC_MOQ_REQERR_UNKNOWN_STATUS_IN_RANGE
Definition moq.h:712
@ IMQUIC_MOQ_REQERR_DOES_NOT_EXIST
Definition moq.h:703
@ IMQUIC_MOQ_REQERR_INVALID_RANGE
Definition moq.h:704
@ IMQUIC_MOQ_REQERR_UNINTERESTED
Definition moq.h:708
@ IMQUIC_MOQ_REQERR_DUPLICATE_SUBSCRIPTION
Definition moq.h:706
@ IMQUIC_MOQ_REQERR_TIMEOUT
Definition moq.h:698
@ IMQUIC_MOQ_REQERR_INVALID_JOINING_REQUEST_ID
Definition moq.h:711
@ IMQUIC_MOQ_REQERR_MALFORMED_AUTH_TOKEN
Definition moq.h:700
@ IMQUIC_MOQ_REQERR_EXPIRED_AUTH_TOKEN
Definition moq.h:701
@ IMQUIC_MOQ_REQERR_UNAUTHORIZED
Definition moq.h:697
@ IMQUIC_MOQ_REQERR_NOT_SUPPORTED
Definition moq.h:699
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:420
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))
Configure the callback function to be notified when an FETCH we previously sent was rejected with an ...
Definition imquic-moq.c:722
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:688
imquic_moq_group_order
Group ordering for tracks.
Definition moq.h:367
@ IMQUIC_MOQ_ORDERING_DESCENDING
Definition moq.h:370
@ IMQUIC_MOQ_ORDERING_ASCENDING
Definition moq.h:369
@ IMQUIC_MOQ_ORDERING_ORIGINAL
Definition moq.h:368
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:253
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_accept_subscribe(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_extensions)
Function to accept an incoming SUBSCRIBE request.
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))
Configure the callback function to be notified when a PUBLISH we previously sent was rejected with an...
Definition imquic-moq.c:498
imquic_moq_version imquic_moq_get_version(imquic_connection *conn)
Helper function to get the MoQ version associated with a connection.
int imquic_moq_parse_auth_token(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.
const char * imquic_moq_extension_type_str(imquic_moq_extension_type type)
Helper function to serialize to string the name of a imquic_moq_extension_type value.
Definition imquic-moq.c:878
int imquic_moq_send_object(imquic_connection *conn, imquic_moq_object *object)
Function to send a MoQ object.
int imquic_moq_publish(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_name *tn, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_extensions)
Function to send a PUBLISH request.
int imquic_moq_accept_publish(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Function to accept an incoming PUBLISH request.
void imquic_set_incoming_subscribe_cb(imquic_endpoint *endpoint, void(*incoming_subscribe)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_namespace *tns, imquic_moq_name *tn, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when there's an incoming SUBSCRIBE request.
Definition imquic-moq.c:509
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:554
imquic_moq_version
Versions that can be negotiated.
Definition moq.h:1067
@ IMQUIC_MOQ_VERSION_ANY_LEGACY
Definition moq.h:1089
@ IMQUIC_MOQ_VERSION_MIN
Definition moq.h:1071
@ IMQUIC_MOQ_VERSION_MAX
Definition moq.h:1083
@ IMQUIC_MOQ_VERSION_16
Definition moq.h:1082
@ IMQUIC_MOQ_VERSION_14
Definition moq.h:1078
@ IMQUIC_MOQ_VERSION_12
Definition moq.h:1074
@ IMQUIC_MOQ_VERSION_13
Definition moq.h:1076
@ IMQUIC_MOQ_VERSION_11
Definition moq.h:1072
@ IMQUIC_MOQ_VERSION_15
Definition moq.h:1080
@ IMQUIC_MOQ_VERSION_BASE
Definition moq.h:1069
@ IMQUIC_MOQ_VERSION_ANY
Definition moq.h:1086
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:801
imquic_moq_auth_token_alias_type
MoQ Authorization Token Alias Type.
Definition moq.h:611
@ IMQUIC_MOQ_AUTH_TOKEN_DELETE
DELETE.
Definition moq.h:613
@ IMQUIC_MOQ_AUTH_TOKEN_USE_ALIAS
USE_ALIAS.
Definition moq.h:617
@ IMQUIC_MOQ_AUTH_TOKEN_USE_VALUE
USE_VALUE.
Definition moq.h:619
@ IMQUIC_MOQ_AUTH_TOKEN_REGISTER
REGISTER.
Definition moq.h:615
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.
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_set_max_request_id(imquic_connection *conn, uint64_t max_request_id)
Helper function to set the Maximum Request ID a subscriber can send.
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 endpoi...
Definition imquic-moq.c:789
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.
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))
Configure the callback function to be notified when an PUBLISH_NAMESPACE we previously sent was rejec...
Definition imquic-moq.c:453
imquic_moq_error_code
Generic error codes.
Definition moq.h:664
@ IMQUIC_MOQ_DUPLICATE_AUTH_TOKEN_ALIAS
Definition moq.h:679
@ IMQUIC_MOQ_CONTROL_MESSAGE_TIMEOUT
Definition moq.h:676
@ IMQUIC_MOQ_EXPIRED_AUTH_TOKEN
Definition moq.h:683
@ IMQUIC_MOQ_INTERNAL_ERROR
Definition moq.h:666
@ IMQUIC_MOQ_KEYVALUE_FORMATTING_ERROR
Definition moq.h:671
@ IMQUIC_MOQ_MALFORMED_AUTHORITY
Definition moq.h:685
@ IMQUIC_MOQ_VERSION_NEGOTIATION_FAILED
Definition moq.h:680
@ IMQUIC_MOQ_INVALID_REQUEST_ID
Definition moq.h:669
@ IMQUIC_MOQ_INVALID_AUTHORITY
Definition moq.h:684
@ IMQUIC_MOQ_INVALID_PATH
Definition moq.h:673
@ IMQUIC_MOQ_DATA_STREAM_TIMEOUT
Definition moq.h:677
@ IMQUIC_MOQ_MALFORMED_AUTH_TOKEN
Definition moq.h:681
@ IMQUIC_MOQ_AUTH_TOKEN_CACHE_OVERFLOW
Definition moq.h:678
@ IMQUIC_MOQ_PROTOCOL_VIOLATION
Definition moq.h:668
@ IMQUIC_MOQ_DUPLICATE_TRACK_ALIAS
Definition moq.h:670
@ IMQUIC_MOQ_UNKNOWN_ERROR
Definition moq.h:687
@ IMQUIC_MOQ_UNAUTHORIZED
Definition moq.h:667
@ IMQUIC_MOQ_MALFORMED_PATH
Definition moq.h:674
@ IMQUIC_MOQ_NO_ERROR
Definition moq.h:665
@ IMQUIC_MOQ_GOAWAY_TIMEOUT
Definition moq.h:675
@ IMQUIC_MOQ_UNKNOWN_AUTH_TOKEN_ALIAS
Definition moq.h:682
@ IMQUIC_MOQ_TOO_MANY_REQUESTS
Definition moq.h:672
void imquic_set_incoming_unsubscribe_namespace_cb(imquic_endpoint *endpoint, void(*incoming_unsubscribe_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns))
Configure the callback function to be notified when there's an incoming UNSUBSCRIBE_NAMESPACE request...
Definition imquic-moq.c:643
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_name *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:733
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.
int imquic_moq_unsubscribe_namespace(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Function to send a UNSUBSCRIBE_NAMESPACE request.
imquic_moq_extension_type
Known MoQ Object Extension header types.
Definition moq.h:555
@ IMQUIC_MOQ_EXT_PRIOR_OBJECT_ID_GAP
Definition moq.h:569
@ IMQUIC_MOQ_EXT_MAX_CACHE_DURATION
Definition moq.h:559
@ IMQUIC_MOQ_EXT_PRIOR_GROUP_ID_GAP
Definition moq.h:567
@ IMQUIC_MOQ_EXT_DEFAULT_GROUP_ORDER
Definition moq.h:563
@ IMQUIC_MOQ_EXT_IMMUTABLE_EXTENSIONS
Definition moq.h:571
@ IMQUIC_MOQ_EXT_DYNAMIC_GROUPS
Definition moq.h:565
@ IMQUIC_MOQ_EXT_DEFAULT_PUBLISHER_PRIORITY
Definition moq.h:561
@ IMQUIC_MOQ_EXT_DELIVERY_TIMEOUT
Definition moq.h:557
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.
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...
int imquic_moq_accept_track_status(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters)
Function to accept an incoming TRACK_STATUS request.
void imquic_moq_namespace_free(imquic_moq_namespace *tns)
Helper to free a imquic_moq_namespace instance.
Definition imquic-moq.c:344
void imquic_set_track_status_accepted_cb(imquic_endpoint *endpoint, void(*track_status_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters))
Configure the callback function to be notified when a TRACK_STATUS we previously sent was accepted.
Definition imquic-moq.c:745
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:654
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_name_equals(imquic_moq_name *first, imquic_moq_name *second)
Helper to check whether two track names are the sames.
Definition imquic-moq.c:368
int imquic_moq_subscribe(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_namespace *tns, imquic_moq_name *tn, imquic_moq_request_parameters *parameters)
Function to send a SUBSCRIBE request.
size_t imquic_moq_build_auth_token(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.
int imquic_moq_goaway(imquic_connection *conn, const char *uri)
Function to send a GOAWAY request.
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))
Configure the callback function to be notified when a REQUEST_UPDATE we previously sent was rejected ...
Definition imquic-moq.c:565
int imquic_moq_track_status(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_name *tn, imquic_moq_request_parameters *parameters)
Function to send a TRACK_STATUS request.
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)
Function to reject an incoming FETCH request.
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))
Configure the callback function to be notified when a TRACK_STATUS we previously sent was rejected wi...
Definition imquic-moq.c:756
imquic_moq_subscribe_namespace_options
Subscribe options for namespaces.
Definition moq.h:415
@ IMQUIC_MOQ_WANT_PUBLISH
Definition moq.h:416
@ IMQUIC_MOQ_WANT_PUBLISH_AND_NAMESPACE
Definition moq.h:418
@ IMQUIC_MOQ_WANT_NAMESPACE
Definition moq.h:417
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)
Function to reject an incoming SUBSCRIBE_NAMESPACE request.
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:700
imquic_moq_pub_done_code
Publish done codes.
Definition moq.h:720
@ IMQUIC_MOQ_PUBDONE_TRACK_ENDED
Definition moq.h:723
@ IMQUIC_MOQ_PUBDONE_UNAUTHORIZED
Definition moq.h:722
@ IMQUIC_MOQ_PUBDONE_EXPIRED
Definition moq.h:726
@ IMQUIC_MOQ_PUBDONE_GOING_AWAY
Definition moq.h:725
@ IMQUIC_MOQ_PUBDONE_MALFORMED_TRACK
Definition moq.h:728
@ IMQUIC_MOQ_PUBDONE_INTERNAL_ERROR
Definition moq.h:721
@ IMQUIC_MOQ_PUBDONE_SUBSCRIPTION_ENDED
Definition moq.h:724
@ IMQUIC_MOQ_PUBDONE_TOO_FAR_BEHIND
Definition moq.h:727
@ IMQUIC_MOQ_PUBDONE_UPDATE_FAILED
Definition moq.h:729
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:383
int imquic_moq_standalone_fetch(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_name *tn, imquic_moq_location_range *range, imquic_moq_request_parameters *parameters)
Function to send a standalone FETCH request.
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 track_alias, uint64_t retry_interval))
Configure the callback function to be notified when a SUBSCRIBE we previously sent was rejected with ...
Definition imquic-moq.c:532
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_extensions))
Configure the callback function to be notified when an FETCH we previously sent was accepted.
Definition imquic-moq.c:711
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.
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:587
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:299
int imquic_moq_requests_blocked(imquic_connection *conn)
Function to send a REQUESTS_BLOCKED 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_extensions))
Configure the callback function to be notified when a SUBSCRIBE we previously sent was accepted.
Definition imquic-moq.c:521
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)
Function to reject an incoming TRACK_STATUS request.
imquic_moq_delivery
Ways of sending objects.
Definition moq.h:505
@ IMQUIC_MOQ_USE_FETCH
All fetched objects on the same STREAM.
Definition moq.h:511
@ IMQUIC_MOQ_USE_DATAGRAM
A single object on a DATAGRAM.
Definition moq.h:507
@ IMQUIC_MOQ_USE_SUBGROUP
All objects of the same subgroup on the same STREAM.
Definition moq.h:509
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:665
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:279
Token value, if any.
Definition moq.h:639
uint8_t * buffer
Definition moq.h:641
uint64_t length
Definition moq.h:640
MoQ Authorization Token.
Definition moq.h:627
imquic_moq_auth_token_alias_type alias_type
Alias type.
Definition moq.h:629
uint64_t token_alias
Token alias, if any.
Definition moq.h:633
gboolean token_type_set
Whether there is a token type.
Definition moq.h:635
uint64_t token_type
Token type, if any.
Definition moq.h:637
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:631
MoQ location range (from where to where, e.g., for FETCH)
Definition moq.h:396
imquic_moq_location end
End group/object.
Definition moq.h:400
imquic_moq_location start
Start group/object.
Definition moq.h:398
MoQ Group/Object couple (for ranges)
Definition moq.h:390
uint64_t object
Definition moq.h:392
uint64_t group
Definition moq.h:391
MoQ Track Name.
Definition moq.h:348
size_t length
Size of the name data.
Definition moq.h:352
uint8_t * buffer
Name data (typically a non-null terminated string)
Definition moq.h:350
MoQ Track Namespace.
Definition moq.h:308
size_t length
Size of the namespace data.
Definition moq.h:312
uint8_t * buffer
Namespace data (typically a non-null terminated string)
Definition moq.h:310
struct imquic_moq_namespace * next
Next namespace in this list, if this is a tuple.
Definition moq.h:314
MoQ Object Extension.
Definition moq.h:538
uint64_t number
Definition moq.h:544
struct imquic_moq_object_extension::@177124263055135035040370145357160103327167033353::imquic_moq_object_extension_data data
union imquic_moq_object_extension::@177124263055135035040370145357160103327167033353 value
Extension value, which could be either a number (even extension ID) or an octet of data with length (...
uint64_t length
Definition moq.h:546
uint32_t id
MoQ extension ID.
Definition moq.h:540
uint8_t * buffer
Definition moq.h:547
MoQ Object.
Definition moq.h:582
imquic_moq_delivery delivery
How to send this object (or how it was received)
Definition moq.h:604
size_t payload_len
Size of the MoQ object payload.
Definition moq.h:600
uint64_t subgroup_id
MoQ subgroup_id.
Definition moq.h:590
gboolean end_of_stream
Whether this signals the end of the stream.
Definition moq.h:606
uint64_t group_id
MoQ group_id.
Definition moq.h:588
uint64_t object_id
MoQ object_id.
Definition moq.h:592
uint8_t * payload
MoQ object payload.
Definition moq.h:598
uint8_t priority
MoQ publisher priority.
Definition moq.h:596
uint64_t track_alias
MoQ track_alias.
Definition moq.h:586
imquic_moq_object_status object_status
MoQ object status.
Definition moq.h:594
GList * extensions
MoQ object extensions, if any.
Definition moq.h:602
uint64_t request_id
MoQ request_id.
Definition moq.h:584
MoQ request parameters.
Definition moq.h:436
gboolean largest_object_set
Whether the LARGEST_OBJECT parameter is set.
Definition moq.h:476
gboolean subscription_filter_set
Whether the SUBSCRIPTION_FILTER parameter is set.
Definition moq.h:468
uint8_t publisher_priority
Value of the PUBLISHER_PRIORITY parameter.
Definition moq.h:458
gboolean dynamic_groups_set
Whether the DYNAMIC_GROUPS parameter is set.
Definition moq.h:485
uint8_t subscriber_priority
Value of the SUBSCRIBER_PRIORITY parameter.
Definition moq.h:462
size_t auth_token_len
Size of the AUTHORIZATION_TOKEN parameter.
Definition moq.h:442
uint64_t new_group_request
Value of the NEW_GROUP_REQUEST parameter.
Definition moq.h:492
uint64_t expires
Value of the EXPIRES parameter.
Definition moq.h:474
gboolean auth_token_set
Whether the AUTHORIZATION_TOKEN parameter is set.
Definition moq.h:438
uint64_t delivery_timeout
Value of the DELIVERY_TIMEOUT parameter.
Definition moq.h:446
gboolean dynamic_groups
Value of the DYNAMIC_GROUPS parameter.
Definition moq.h:488
imquic_moq_location largest_object
Value of the LARGEST_OBJECT parameter.
Definition moq.h:478
imquic_moq_group_order group_order
Value of the GROUP_ORDER parameter.
Definition moq.h:466
gboolean new_group_request_set
Whether the NEW_GROUP_REQUEST parameter is set.
Definition moq.h:490
gboolean subscriber_priority_set
Whether the SUBSCRIBER_PRIORITY parameter is set.
Definition moq.h:460
gboolean publisher_priority_set
Whether the PUBLISHER_PRIORITY parameter is set.
Definition moq.h:455
gboolean delivery_timeout_set
Whether the DELIVERY_TIMEOUT parameter is set.
Definition moq.h:444
gboolean forward
Value of the FORWARD parameter.
Definition moq.h:482
uint8_t auth_token[256]
Value of the AUTHORIZATION_TOKEN parameter.
Definition moq.h:440
gboolean forward_set
Whether the FORWARD parameter is set.
Definition moq.h:480
gboolean expires_set
Whether the EXPIRES parameter is set.
Definition moq.h:472
gboolean group_order_set
Whether the GROUP_ORDER parameter is set.
Definition moq.h:464
gboolean max_cache_duration_set
Whether the MAX_CACHE_DURATION parameter is set.
Definition moq.h:449
gboolean unknown
Whether there's unknown parameters.
Definition moq.h:495
uint64_t max_cache_duration
Value of the MAX_CACHE_DURATION parameter.
Definition moq.h:452
imquic_moq_subscription_filter subscription_filter
Value of the SUBSCRIPTION_FILTER parameter.
Definition moq.h:470
MoQ subscription filter.
Definition moq.h:404
imquic_moq_location start_location
Start location (depending on filter type)
Definition moq.h:408
imquic_moq_filter_type type
Filter type.
Definition moq.h:406
uint64_t end_group
End group (depending on filter type)
Definition moq.h:410