18#ifndef IMQUIC_MOQ_INTERNAL_H 
   19#define IMQUIC_MOQ_INTERNAL_H 
   32#define IMQUIC_MOQ              7171953 
  750        uint8_t *bytes, 
size_t blen, 
size_t poffset, 
size_t plen, 
size_t *start);
 
  865        gboolean forward, uint8_t priority, uint8_t group_order,
 
  866        imquic_moq_filter_type filter, uint64_t start_group, uint64_t start_object, uint64_t end_group, uint64_t end_object,
 
  914        uint64_t request_id, uint64_t sub_request_id,
 
  915        uint64_t start_group, uint64_t start_object, uint64_t end_group, uint64_t end_object, uint8_t priority,
 
  931        uint64_t track_alias, uint64_t expires, 
imquic_moq_group_order group_order, gboolean content_exists, uint64_t largest_group_id, uint64_t largest_object_id,
 
  964        imquic_moq_sub_done_code status, uint64_t streams_count, 
const char *reason, gboolean content_exists, uint64_t final_group, uint64_t final_object);
 
 1019        uint64_t request_id, uint64_t joining_request_id, uint64_t preceding_group_offset,
 
 1041        uint8_t group_order, uint8_t end_of_track, uint64_t largest_group_id, uint64_t largest_object_id,
 
 1087        uint64_t track_alias, uint64_t expires, 
imquic_moq_group_order group_order, gboolean content_exists, uint64_t largest_group_id, uint64_t largest_object_id,
 
 1117        uint64_t group_id, uint64_t object_id, uint64_t object_status, uint8_t priority,
 
 1118        uint8_t *payload, 
size_t plen, 
size_t extensions_count, uint8_t *extensions, 
size_t elen);
 
 1133        uint64_t track_alias, uint64_t group_id, uint64_t object_id, uint8_t priority,
 
 1134        uint64_t object_status, uint8_t *extensions, 
size_t elen);
 
 1147        uint64_t request_id, uint64_t track_alias, uint8_t priority);
 
 1160        uint64_t group_id, uint64_t object_id, uint64_t object_status, uint8_t *payload, 
size_t plen);
 
 1176        uint64_t request_id, uint64_t track_alias, uint64_t group_id, uint64_t subgroup_id, uint8_t priority);
 
 1192        uint8_t *bytes, 
size_t blen, uint64_t object_id, uint64_t object_status, uint8_t *payload, 
size_t plen,
 
 1193        size_t extensions_count, uint8_t *extensions, 
size_t elen);
 
 1221        uint64_t group_id, uint64_t subgroup_id, uint64_t object_id, uint8_t priority,
 
 1222        uint64_t object_status, uint8_t *payload, 
size_t plen,
 
 1223        size_t extensions_count, uint8_t *extensions, 
size_t elen);
 
 1242        size_t extensions_count, uint8_t *extensions, 
size_t elen);
 
 1294        uint8_t *bytes, 
size_t blen, uint8_t *params_num);
 
 1305        uint8_t *bytes, 
size_t blen, uint8_t *params_num);
 
 1331                gboolean descending, 
imquic_moq_location *largest, gboolean forward, uint8_t *auth, 
size_t authlen);
 
 1364                gboolean absolute, uint64_t joining_start, gboolean descending, uint8_t *auth, 
size_t authlen);
 
 
 1402        uint8_t *bytes, uint64_t offset, uint64_t length, gboolean complete);
 
imquic MoQ public interface (headers)
 
imquic_moq_object_status
MoQ Object status.
Definition imquic/moq.h:427
 
imquic_moq_pub_error_code
Publish error codes.
Definition imquic/moq.h:627
 
imquic_moq_filter_type
MoQ filter type, for subscriptions.
Definition imquic/moq.h:385
 
imquic_moq_version
Versions that can be negotiated.
Definition imquic/moq.h:1029
 
imquic_moq_fetch_error_code
Fetch error codes.
Definition imquic/moq.h:674
 
imquic_moq_sub_error_code
Subscribe error codes.
Definition imquic/moq.h:640
 
imquic_moq_sub_done_code
Subscribe done codes.
Definition imquic/moq.h:695
 
imquic_moq_subns_error_code
Subscribe namespaces error codes.
Definition imquic/moq.h:658
 
imquic_moq_publish_namespace_error_code
Publish Namespace error codes.
Definition imquic/moq.h:611
 
imquic_moq_delivery
Ways of sending objects.
Definition imquic/moq.h:411
 
imquic public interface (headers)
 
size_t imquic_moq_parse_subscribe_parameter(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_subscribe_parameters *params, uint8_t *error)
Helper method to parse a MoQ subscribe parameter.
Definition moq.c:5835
 
void imquic_moq_qlog_object_datagram_status_parsed(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_status_parsed event.
Definition moq.c:7736
 
size_t imquic_moq_add_subscribe(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t track_alias, imquic_moq_namespace *track_namespace, imquic_moq_name *track_name, uint8_t priority, uint8_t group_order, gboolean forward, imquic_moq_filter_type filter, uint64_t start_group, uint64_t start_object, uint64_t end_group, uint64_t end_object, imquic_moq_subscribe_parameters *parameters)
Helper to add a SUBSCRIBE message to a buffer.
Definition moq.c:4779
 
json_t * imquic_qlog_moq_message_prepare(const char *type)
Helper to create a new QLOG MoQT message.
Definition moq.c:7528
 
size_t imquic_moq_parse_publish_namespace_done(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_NAMESPACE_DONE message.
Definition moq.c:1989
 
int imquic_moq_parse_message(imquic_moq_context *moq, uint64_t stream_id, uint8_t *bytes, size_t blen, gboolean complete, gboolean datagram)
Parse an incoming MoQ message.
Definition moq.c:1174
 
size_t imquic_moq_add_subscribe_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_sub_error_code error, const char *reason, uint64_t track_alias)
Helper method to add a SUBSCRIBE_ERRROR message to a buffer.
Definition moq.c:4926
 
size_t imquic_moq_add_max_request_id(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t max_request_id)
Helper method to add a MAX_REQUEST_ID message to a buffer.
Definition moq.c:4485
 
size_t imquic_moq_add_server_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint32_t version, imquic_moq_setup_parameters *parameters)
Helper method to add a SERVER_SETUP message to a buffer.
Definition moq.c:4463
 
void imquic_moq_qlog_fetch_header_parsed(imquic_qlog *qlog, imquic_moq_stream *stream)
Add a fetch_header_parsed event.
Definition moq.c:7826
 
gboolean imquic_moq_buffer_resize(imquic_moq_buffer *buffer, uint64_t new_size)
Resize an existing buffer.
Definition moq.c:1004
 
size_t imquic_moq_parse_object_datagram_status(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_datagram_message_type dtype, uint8_t *error)
Helper to parse an OBJECT_DATAGRAM_STATUS message.
Definition moq.c:3786
 
size_t imquic_moq_parse_publish_done(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_DONE message.
Definition moq.c:2749
 
size_t imquic_moq_add_unsubscribe_namespace(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_namespace *track_namespace)
Helper method to add an UNSUBSCRIBE_NAMESPACE message to a buffer.
Definition moq.c:5102
 
size_t imquic_moq_add_object_datagram_status(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t track_alias, uint64_t group_id, uint64_t object_id, uint8_t priority, uint64_t object_status, uint8_t *extensions, size_t elen)
Helper to add an OBJECT_DATAGRAM_STATUS message to a buffer.
Definition moq.c:5454
 
size_t imquic_moq_parse_publish_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_OK message.
Definition moq.c:2169
 
size_t imquic_moq_add_publish_namespace_done(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_namespace *track_namespace)
Helper method to add a PUBLISH_NAMESPACE_DONE message to a buffer.
Definition moq.c:4613
 
size_t imquic_moq_subscribe_parameters_serialize(imquic_moq_context *moq, imquic_moq_subscribe_parameters *parameters, uint8_t *bytes, size_t blen, uint8_t *params_num)
Helper to serialize a imquic_moq_subscribe_parameters set to a buffer.
Definition moq.c:964
 
void imquic_moq_qlog_control_message_parsed(imquic_qlog *qlog, uint64_t stream_id, size_t length, json_t *message)
Add a control_message_parsed event.
Definition moq.c:7664
 
size_t imquic_moq_add_requests_blocked(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t max_request_id)
Helper method to add a REQUESTS_BLOCKED message to a buffer.
Definition moq.c:4502
 
size_t imquic_moq_add_publish_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_pub_error_code error, const char *reason)
Helper method to add a PUBLISH_ERRROR message to a buffer.
Definition moq.c:4751
 
void imquic_moq_qlog_subgroup_object_parsed(imquic_qlog *qlog, uint64_t stream_id, imquic_moq_object *object)
Add a subgroup_object_parsed event.
Definition moq.c:7798
 
size_t imquic_moq_add_publish_namespace_cancel(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_namespace *track_namespace, imquic_moq_publish_namespace_error_code error, const char *reason)
Helper method to add aN PUBLISH_NAMESPACE_CANCEL message to a buffer.
Definition moq.c:4631
 
size_t imquic_moq_parse_track_status(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a TRACK_STATUS message.
Definition moq.c:3367
 
size_t imquic_moq_add_subscribe_namespace(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace, imquic_moq_subscribe_parameters *parameters)
Helper to add a SUBSCRIBE_NAMESPACE message to a buffer.
Definition moq.c:5014
 
void imquic_qlog_moq_message_add_setup_parameters(json_t *message, imquic_moq_setup_parameters *parameters, const char *name)
Helper to add a stringified array of setup parameters to a message.
Definition moq.c:7563
 
size_t imquic_moq_parse_subscribe_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_OK message.
Definition moq.c:2559
 
imquic_moq_subscription * imquic_moq_subscription_create(uint64_t request_id, uint64_t track_alias)
Helper to create a new subscription instance.
Definition moq.c:1046
 
size_t imquic_moq_add_fetch_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_fetch_error_code error, const char *reason)
Helper method to add a FETCH_ERRROR message to a buffer.
Definition moq.c:5268
 
void imquic_moq_subscription_destroy(imquic_moq_subscription *moq_sub)
Destroy an existing MoQ subscription.
Definition moq.c:1056
 
size_t imquic_moq_add_track_status(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace, imquic_moq_name *track_name, uint8_t priority, uint8_t group_order, gboolean forward, imquic_moq_filter_type filter, uint64_t start_group, uint64_t start_object, uint64_t end_group, uint64_t end_object, imquic_moq_subscribe_parameters *parameters)
Helper to add a TRACK_STATUS message to a buffer.
Definition moq.c:5302
 
size_t imquic_moq_parse_track_status_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a TRACK_STATUS_OK message.
Definition moq.c:3493
 
void imquic_moq_stream_incoming(imquic_connection *conn, uint64_t stream_id, uint8_t *bytes, uint64_t offset, uint64_t length, gboolean complete)
Callback the core invokes when there's new incoming data on a STREAM.
Definition moq.c:163
 
size_t imquic_moq_parameter_add_data(imquic_moq_context *moq, uint8_t *bytes, size_t blen, int param, uint8_t *buf, size_t buflen)
Helper to add a MoQ (setup or subscribe) parameter with generic data to a buffer.
Definition moq.c:5726
 
imquic_moq_setup_parameter_type
MoQ setup parameter types.
Definition internal/moq.h:173
 
@ IMQUIC_MOQ_SETUP_PARAM_AUTHORITY
Definition internal/moq.h:179
 
@ IMQUIC_MOQ_SETUP_PARAM_AUTHORIZATION_TOKEN
Definition internal/moq.h:177
 
@ IMQUIC_MOQ_SETUP_PARAM_MAX_REQUEST_ID
Definition internal/moq.h:176
 
@ IMQUIC_MOQ_SETUP_PARAM_PATH
Definition internal/moq.h:175
 
@ IMQUIC_MOQ_SETUP_PARAM_ROLE
Definition internal/moq.h:174
 
@ IMQUIC_MOQ_SETUP_PARAM_MOQT_IMPLEMENTATION
Definition internal/moq.h:180
 
@ IMQUIC_MOQ_SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE
Definition internal/moq.h:178
 
size_t imquic_moq_add_publish_done(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_sub_done_code status, uint64_t streams_count, const char *reason, gboolean content_exists, uint64_t final_group, uint64_t final_object)
Helper method to add a PUBLISH_DONE message to a buffer.
Definition moq.c:4975
 
struct imquic_moq_subscription imquic_moq_subscription
MoQ subscription, whether this is a publisher or a subscriber.
 
void imquic_moq_stream_destroy(imquic_moq_stream *moq_stream)
Destroy an existing MoQ stream.
Definition moq.c:1065
 
size_t imquic_moq_parse_subscribe_namespace_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_NAMESPACE_ERROR message.
Definition moq.c:2933
 
size_t imquic_moq_parse_publish_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_ERROR message.
Definition moq.c:2268
 
size_t imquic_moq_parse_setup_parameter(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_setup_parameters *params, uint8_t *error)
Helper method to parse a MoQ setup parameter.
Definition moq.c:5746
 
size_t imquic_moq_add_publish_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, gboolean forward, uint8_t priority, uint8_t group_order, imquic_moq_filter_type filter, uint64_t start_group, uint64_t start_object, uint64_t end_group, uint64_t end_object, imquic_moq_subscribe_parameters *parameters)
Helper method to add a PUBLISH_OK message to a buffer.
Definition moq.c:4707
 
size_t imquic_moq_parse_requests_blocked(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a REQUESTS_BLOCKED message.
Definition moq.c:1795
 
size_t imquic_moq_parse_fetch_header(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a FETCH_HEADER message.
Definition moq.c:4183
 
void imquic_moq_buffer_destroy(imquic_moq_buffer *buffer)
Destroy an existing buffer.
Definition moq.c:1039
 
void imquic_moq_datagram_message_type_parse(imquic_moq_version version, imquic_moq_datagram_message_type type, gboolean *ext, gboolean *eog, gboolean *oid)
Helper function to parse a imquic_moq_datagram_message_type value for OBJECT_DATAGRAM to the individu...
Definition moq.c:538
 
size_t imquic_moq_parse_subgroup_header(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, imquic_moq_data_message_type dtype, uint8_t *error)
Helper to parse a SUBGROUP_HEADER message.
Definition moq.c:3974
 
const char * imquic_moq_subscribe_parameter_type_str(imquic_moq_subscribe_parameter_type type, imquic_moq_version version)
Helper function to serialize to string the name of a imquic_moq_subscribe_parameter_type value.
Definition moq.c:807
 
imquic_moq_datagram_message_type
MoQ datagram messages.
Definition internal/moq.h:80
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS_v11
Definition internal/moq.h:95
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_EOG_NOEXT_NOOID
Definition internal/moq.h:89
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_NOOID
Definition internal/moq.h:86
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM
Definition internal/moq.h:82
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS_v13
Definition internal/moq.h:93
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS_NOEXT_v11
Definition internal/moq.h:96
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_EOG
Definition internal/moq.h:84
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_EOG_NOOID
Definition internal/moq.h:88
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_NOEXT_NOOID
Definition internal/moq.h:87
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS
Definition internal/moq.h:91
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS_NOEXT_v13
Definition internal/moq.h:94
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_EOG_NOEXT
Definition internal/moq.h:85
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS_NOEXT
Definition internal/moq.h:92
 
@ IMQUIC_MOQ_OBJECT_DATAGRAM_NOEXT
Definition internal/moq.h:83
 
void imquic_moq_qlog_subgroup_header_parsed(imquic_qlog *qlog, imquic_moq_stream *stream)
Add a subgroup_header_parsed event.
Definition moq.c:7766
 
size_t imquic_moq_add_fetch(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_fetch_type type, uint64_t request_id, uint64_t joining_request_id, uint64_t preceding_group_offset, imquic_moq_namespace *track_namespace, imquic_moq_name *track_name, uint8_t priority, imquic_moq_group_order group_order, imquic_moq_location_range *range, imquic_moq_subscribe_parameters *parameters)
Helper to add a FETCH message to a buffer.
Definition moq.c:5120
 
size_t imquic_moq_parse_server_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, gboolean legacy, uint8_t *error)
Helper to parse a SERVER_SETUP message.
Definition moq.c:1675
 
size_t imquic_moq_add_publish_namespace_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace)
Helper method to add a PUBLISH_NAMESPACE_OK message to a buffer.
Definition moq.c:4552
 
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.
Definition moq.c:862
 
size_t imquic_moq_add_fetch_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint8_t group_order, uint8_t end_of_track, uint64_t largest_group_id, uint64_t largest_object_id, imquic_moq_subscribe_parameters *parameters)
Helper method to add a FETCH_OK message to a buffer.
Definition moq.c:5230
 
imquic_moq_datagram_message_type imquic_moq_datagram_message_type_return(imquic_moq_version version, gboolean ext, gboolean eog, gboolean oid)
Helper function to return the imquic_moq_datagram_message_type value for OBJECT_DATAGRAM out of the i...
Definition moq.c:510
 
struct imquic_moq_callbacks imquic_moq_callbacks
MoQ public callbacks.
 
imquic_moq_message_type
MoQ messages.
Definition internal/moq.h:40
 
@ IMQUIC_MOQ_SUBSCRIBE_ERROR
Definition internal/moq.h:44
 
@ IMQUIC_MOQ_CLIENT_SETUP
Definition internal/moq.h:66
 
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_OK
Definition internal/moq.h:46
 
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE_OK
Definition internal/moq.h:57
 
@ IMQUIC_MOQ_FETCH
Definition internal/moq.h:62
 
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE_ERROR
Definition internal/moq.h:58
 
@ IMQUIC_MOQ_MAX_REQUEST_ID
Definition internal/moq.h:60
 
@ IMQUIC_MOQ_FETCH_CANCEL
Definition internal/moq.h:63
 
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE
Definition internal/moq.h:56
 
@ IMQUIC_MOQ_SUBSCRIBE
Definition internal/moq.h:42
 
@ IMQUIC_MOQ_PUBLISH_ERROR
Definition internal/moq.h:70
 
@ IMQUIC_MOQ_FETCH_OK
Definition internal/moq.h:64
 
@ IMQUIC_MOQ_SERVER_SETUP_LEGACY
Definition internal/moq.h:72
 
@ IMQUIC_MOQ_UNSUBSCRIBE
Definition internal/moq.h:49
 
@ IMQUIC_MOQ_FETCH_ERROR
Definition internal/moq.h:65
 
@ IMQUIC_MOQ_UNSUBSCRIBE_NAMESPACE
Definition internal/moq.h:59
 
@ IMQUIC_MOQ_TRACK_STATUS_ERROR
Definition internal/moq.h:54
 
@ IMQUIC_MOQ_PUBLISH_NAMESPACE
Definition internal/moq.h:45
 
@ IMQUIC_MOQ_SUBSCRIBE_UPDATE
Definition internal/moq.h:41
 
@ IMQUIC_MOQ_CLIENT_SETUP_LEGACY
Definition internal/moq.h:71
 
@ IMQUIC_MOQ_GOAWAY
Definition internal/moq.h:55
 
@ IMQUIC_MOQ_PUBLISH_DONE
Definition internal/moq.h:50
 
@ IMQUIC_MOQ_TRACK_STATUS_OK
Definition internal/moq.h:53
 
@ IMQUIC_MOQ_PUBLISH_OK
Definition internal/moq.h:69
 
@ IMQUIC_MOQ_SERVER_SETUP
Definition internal/moq.h:67
 
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_ERROR
Definition internal/moq.h:47
 
@ IMQUIC_MOQ_PUBLISH
Definition internal/moq.h:68
 
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_CANCEL
Definition internal/moq.h:51
 
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_DONE
Definition internal/moq.h:48
 
@ IMQUIC_MOQ_SUBSCRIBE_OK
Definition internal/moq.h:43
 
@ IMQUIC_MOQ_REQUESTS_BLOCKED
Definition internal/moq.h:61
 
@ IMQUIC_MOQ_TRACK_STATUS
Definition internal/moq.h:52
 
const char * imquic_moq_datagram_message_type_str(imquic_moq_datagram_message_type type, imquic_moq_version version)
Helper function to serialize to string the name of a imquic_moq_datagram_message_type value.
Definition moq.c:564
 
imquic_moq_data_message_type imquic_moq_data_message_type_from_subgroup_header(imquic_moq_version version, gboolean subgroup, gboolean sgid0, gboolean ext, gboolean eog)
Helper function to return the imquic_moq_data_message_type value for SUBRGOUP_HEADER out of the indiv...
Definition moq.c:615
 
struct imquic_moq_setup_parameters imquic_moq_setup_parameters
MoQ setup parameters.
 
imquic_moq_delivery imquic_moq_data_message_type_to_delivery(imquic_moq_data_message_type type, imquic_moq_version version)
Helper function to return the imquic_moq_delivery mode associated to a imquic_moq_data_message_type t...
Definition moq.c:739
 
size_t imquic_moq_parse_object_datagram(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_datagram_message_type dtype, uint8_t *error)
Helper to parse an OBJECT_DATAGRAM message.
Definition moq.c:3642
 
size_t imquic_moq_add_control_message(imquic_moq_context *moq, imquic_moq_message_type type, uint8_t *bytes, size_t blen, size_t poffset, size_t plen, size_t *start)
Helper method to put a message header and a payload together.
Definition moq.c:4393
 
size_t imquic_moq_add_fetch_cancel(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id)
Helper method to add an FETCH_CANCEL message to a buffer.
Definition moq.c:5207
 
void imquic_moq_data_message_type_to_subgroup_header(imquic_moq_version version, imquic_moq_data_message_type type, gboolean *subgroup, gboolean *sgid0, gboolean *ext, gboolean *eog)
Helper function to parse a imquic_moq_data_message_type value for SUBRGOUP_HEADER to the individual p...
Definition moq.c:656
 
size_t imquic_moq_parse_unsubscribe_namespace(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse an UNSUBSCRIBE_NAMESPACE message.
Definition moq.c:2997
 
imquic_moq_group_order
Group ordering for FETCH.
Definition internal/moq.h:272
 
@ IMQUIC_MOQ_ORDERING_DESCENDING
Definition internal/moq.h:275
 
@ IMQUIC_MOQ_ORDERING_ASCENDING
Definition internal/moq.h:274
 
@ IMQUIC_MOQ_ORDERING_ORIGINAL
Definition internal/moq.h:273
 
size_t imquic_moq_add_object_datagram(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t track_alias, uint64_t group_id, uint64_t object_id, uint64_t object_status, uint8_t priority, uint8_t *payload, size_t plen, size_t extensions_count, uint8_t *extensions, size_t elen)
Helper to add an OBJECT_DATAGRAM message to a buffer.
Definition moq.c:5420
 
size_t imquic_moq_parse_fetch(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a FETCH message.
Definition moq.c:3023
 
size_t imquic_moq_add_publish_namespace(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace, imquic_moq_subscribe_parameters *parameters)
Helper method to add a PUBLISH_NAMESPACE message to a buffer.
Definition moq.c:4525
 
struct imquic_moq_buffer imquic_moq_buffer
MoQ buffer.
 
void imquic_moq_buffer_shift(imquic_moq_buffer *buffer, uint64_t length)
Move the data in the buffer back of a specific number of bytes.
Definition moq.c:1028
 
void imquic_moq_qlog_fetch_object_parsed(imquic_qlog *qlog, uint64_t stream_id, imquic_moq_object *object)
Add a fetch_object_parsed event.
Definition moq.c:7853
 
size_t imquic_moq_add_subgroup_header(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t track_alias, uint64_t group_id, uint64_t subgroup_id, uint8_t priority)
Helper to add a SUBGROUP_HEADER message to a buffer (only after v06)
Definition moq.c:5535
 
size_t imquic_moq_add_stream_header_track_object(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t group_id, uint64_t object_id, uint64_t object_status, uint8_t *payload, size_t plen)
Helper to add an object to a buffer, formatted as expected for STREAM_HEADER_TRACK objects (so not al...
Definition moq.c:5507
 
void imquic_moq_qlog_stream_type_set(imquic_qlog *qlog, gboolean local, uint64_t stream_id, const char *type)
Add a stream_type_set event.
Definition moq.c:7679
 
void imquic_moq_deinit(void)
Uninitialize the native MoQ stack.
Definition moq.c:43
 
const char * imquic_moq_role_type_str(imquic_moq_role_type type)
Helper function to serialize to string the name of a imquic_moq_role_type value.
Definition moq.c:832
 
size_t imquic_moq_add_object_extensions(imquic_moq_context *moq, uint8_t *bytes, size_t blen, size_t extensions_count, uint8_t *extensions, size_t elen)
Helper method to add object extensions to a buffer.
Definition moq.c:5668
 
size_t imquic_moq_add_publish_namespace_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace, imquic_moq_publish_namespace_error_code error, const char *reason)
Helper method to add a PUBLISH_NAMESPACE_ERROR message to a buffer.
Definition moq.c:4577
 
size_t imquic_moq_parse_client_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, gboolean legacy, uint8_t *error)
Helper to parse a CLIENT_SETUP message.
Definition moq.c:1508
 
size_t imquic_moq_parse_publish_namespace_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_NAMESPACE_ERROR message.
Definition moq.c:1925
 
size_t imquic_moq_parse_publish_namespace_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_NAMESPACE_OK message.
Definition moq.c:1885
 
const char * imquic_moq_message_type_str(imquic_moq_message_type type)
Helper function to serialize to string the name of a imquic_moq_message_type value.
Definition moq.c:443
 
struct imquic_moq_subscribe_parameters imquic_moq_subscribe_parameters
MoQ subscribe parameters.
 
void imquic_moq_init(void)
Initialize the native MoQ stack at startup.
Definition moq.c:39
 
size_t imquic_moq_parse_publish(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH message.
Definition moq.c:2066
 
const char * imquic_moq_fetch_type_str(imquic_moq_fetch_type type)
Helper function to serialize to string the name of a imquic_moq_fetch_type value.
Definition moq.c:875
 
size_t imquic_moq_parse_subscribe_namespace_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_NAMESPACE_OK message.
Definition moq.c:2893
 
size_t imquic_moq_parse_goaway(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a GOAWAY message.
Definition moq.c:4352
 
int imquic_moq_parse_stream_header_track_object(imquic_moq_context *moq, imquic_moq_stream *moq_stream, gboolean complete, uint8_t *error)
Helper to parse a STREAM_HEADER_TRACK object.
Definition moq.c:3902
 
size_t imquic_moq_add_subscribe_namespace_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace, imquic_moq_subns_error_code error, const char *reason)
Helper method to add a SUBSCRIBE_NAMESPACE_ERRROR message to a buffer.
Definition moq.c:5066
 
imquic_moq_data_message_type
MoQ STREAM data messages.
Definition internal/moq.h:119
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_LEGACY
Definition internal/moq.h:121
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID_NOEXT_EOG
Definition internal/moq.h:138
 
@ IMQUIC_MOQ_FETCH_HEADER
Definition internal/moq.h:142
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOEXT_EOG
Definition internal/moq.h:140
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0_NOEXT_v11
Definition internal/moq.h:123
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID
Definition internal/moq.h:133
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID_NOEXT
Definition internal/moq.h:132
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0
Definition internal/moq.h:131
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0_NOEXT_EOG
Definition internal/moq.h:136
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOEXT_v11
Definition internal/moq.h:127
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0_NOEXT
Definition internal/moq.h:130
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0_EOG
Definition internal/moq.h:137
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_EOG
Definition internal/moq.h:141
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0_v11
Definition internal/moq.h:124
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_v11
Definition internal/moq.h:128
 
@ IMQUIC_MOQ_STREAM_HEADER_TRACK
Definition internal/moq.h:120
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID_EOG
Definition internal/moq.h:139
 
@ IMQUIC_MOQ_SUBGROUP_HEADER
Definition internal/moq.h:135
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID_NOEXT_v11
Definition internal/moq.h:125
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID_v11
Definition internal/moq.h:126
 
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOEXT
Definition internal/moq.h:134
 
int imquic_moq_parse_fetch_header_object(imquic_moq_context *moq, imquic_moq_stream *moq_stream, gboolean complete, uint8_t *error)
Helper to parse a FETCH_HEADER object.
Definition moq.c:4213
 
void imquic_moq_qlog_subgroup_object_created(imquic_qlog *qlog, uint64_t stream_id, imquic_moq_object *object)
Add a subgroup_object_created event.
Definition moq.c:7780
 
size_t imquic_moq_parse_unsubscribe(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse an UNSUBSCRIBE message.
Definition moq.c:2714
 
size_t imquic_moq_setup_parameters_serialize(imquic_moq_context *moq, imquic_moq_setup_parameters *parameters, uint8_t *bytes, size_t blen, uint8_t *params_num)
Helper to serialize a imquic_moq_setup_parameters set to a buffer.
Definition moq.c:904
 
size_t imquic_moq_parse_publish_namespace_cancel(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_NAMESPACE_CANCEL message.
Definition moq.c:2015
 
size_t imquic_moq_parse_subscribe_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_ERROR message.
Definition moq.c:2652
 
void imquic_moq_new_connection(imquic_connection *conn, void *user_data)
Callback the core invokes when a new QUIC connection using MoQ is available.
Definition moq.c:52
 
void imquic_moq_qlog_fetch_object_created(imquic_qlog *qlog, uint64_t stream_id, imquic_moq_object *object)
Add a fetch_object_created event.
Definition moq.c:7836
 
imquic_moq_role_type
MoQ roles.
Definition internal/moq.h:203
 
@ IMQUIC_MOQ_ROLE_PUBSUB
Definition internal/moq.h:207
 
@ IMQUIC_MOQ_ROLE_PUBLISHER
Definition internal/moq.h:205
 
@ IMQUIC_MOQ_ROLE_ENDPOINT
Definition internal/moq.h:204
 
@ IMQUIC_MOQ_ROLE_SUBSCRIBER
Definition internal/moq.h:206
 
size_t imquic_moq_add_subscribe_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t track_alias, uint64_t expires, imquic_moq_group_order group_order, gboolean content_exists, uint64_t largest_group_id, uint64_t largest_object_id, imquic_moq_subscribe_parameters *parameters)
Helper method to add a SUBSCRIBE_OK message to a buffer.
Definition moq.c:4883
 
size_t imquic_moq_add_subscribe_namespace_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace)
Helper method to add a SUBSCRIBE_NAMESPACE_OK message to a buffer.
Definition moq.c:5041
 
size_t imquic_moq_add_publish(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace, imquic_moq_name *track_name, uint64_t track_alias, uint8_t group_order, gboolean content_exists, uint64_t largest_group_id, uint64_t largest_object_id, gboolean forward, imquic_moq_subscribe_parameters *parameters)
Helper to add a PUBLISH message to a buffer.
Definition moq.c:4660
 
void imquic_moq_qlog_object_datagram_created(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_created event.
Definition moq.c:7690
 
size_t imquic_moq_parse_track_status_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a TRACK_STATUS_ERROR message.
Definition moq.c:3589
 
void imquic_qlog_moq_message_add_track(json_t *message, imquic_moq_name *track_name)
Helper to add a stringified track name to a message.
Definition moq.c:7553
 
imquic_moq_fetch_type
MoQ FETCH types.
Definition internal/moq.h:283
 
@ IMQUIC_MOQ_FETCH_STANDALONE
Definition internal/moq.h:284
 
@ IMQUIC_MOQ_FETCH_JOINING_ABSOLUTE
Definition internal/moq.h:286
 
@ IMQUIC_MOQ_FETCH_JOINING_RELATIVE
Definition internal/moq.h:285
 
size_t imquic_moq_add_goaway(imquic_moq_context *moq, uint8_t *bytes, size_t blen, const char *new_session_uri)
Helper method to add a GOAWAY message to a buffer.
Definition moq.c:5641
 
size_t imquic_moq_add_subscribe_update(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t sub_request_id, uint64_t start_group, uint64_t start_object, uint64_t end_group, uint64_t end_object, uint8_t priority, gboolean forward, imquic_moq_subscribe_parameters *parameters)
Helper method to add a SUBSCRIBE_UPDATE message to a buffer.
Definition moq.c:4836
 
size_t imquic_moq_add_fetch_header(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id)
Helper to add a FETCH_HEADER message to a buffer (only after v07)
Definition moq.c:5589
 
size_t imquic_moq_add_subgroup_header_object(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint64_t object_id, uint64_t object_status, uint8_t *payload, size_t plen, size_t extensions_count, uint8_t *extensions, size_t elen)
Helper to add an object to a buffer, formatted as expected for SUBGROUP_HEADER objects (so not all ID...
Definition moq.c:5561
 
size_t imquic_moq_parse_fetch_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a FETCH_ERROR message.
Definition moq.c:3314
 
size_t imquic_moq_parse_subscribe_namespace(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_NAMESPACE message.
Definition moq.c:2832
 
size_t imquic_moq_parse_stream_header_track(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a STREAM_HEADER_TRACK message.
Definition moq.c:3867
 
void imquic_qlog_moq_message_add_subscribe_parameters(json_t *message, imquic_moq_subscribe_parameters *parameters, const char *name)
Helper to add a stringified array of subscribe parameters to a message.
Definition moq.c:7618
 
void imquic_qlog_moq_message_add_namespace(json_t *message, imquic_moq_namespace *track_namespace)
Helper to add a stringified namespace tuple array to a message.
Definition moq.c:7536
 
size_t imquic_moq_parse_fetch_cancel(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a FETCH_CANCEL message.
Definition moq.c:3203
 
size_t imquic_moq_parse_max_request_id(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a MAX_REQUEST_ID message.
Definition moq.c:1768
 
void imquic_moq_connection_gone(imquic_connection *conn)
Callback the core invokes when an existing MoQ connection is not available anymore.
Definition moq.c:206
 
struct imquic_moq_context imquic_moq_context
MoQ context.
 
void imquic_moq_qlog_subgroup_header_created(imquic_qlog *qlog, imquic_moq_stream *stream)
Add a subgroup_header_created event.
Definition moq.c:7752
 
size_t imquic_moq_add_client_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, GList *supported_versions, imquic_moq_setup_parameters *parameters)
Helper method to add a CLIENT_SETUP message to a buffer.
Definition moq.c:4427
 
const char * imquic_moq_data_message_type_str(imquic_moq_data_message_type type, imquic_moq_version version)
Helper function to serialize to string the name of a imquic_moq_data_message_type value.
Definition moq.c:692
 
size_t imquic_moq_add_track_status_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_sub_error_code error, const char *reason)
Helper method to add a TRACK_STATUS_ERRROR message to a buffer.
Definition moq.c:5392
 
size_t imquic_moq_parse_subscribe_update(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_UPDATE message.
Definition moq.c:2464
 
size_t imquic_moq_parse_publish_namespace(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_NAMESPACE message.
Definition moq.c:1824
 
int imquic_moq_parse_subgroup_header_object(imquic_moq_context *moq, imquic_moq_stream *moq_stream, gboolean complete, uint8_t *error)
Helper to parse a SUBGROUP_HEADER object.
Definition moq.c:4038
 
size_t imquic_moq_add_stream_header_track(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t track_alias, uint8_t priority)
Helper to add a STREAM_HEADER_TRACK message to a buffer (only before v06)
Definition moq.c:5486
 
void imquic_moq_datagram_incoming(imquic_connection *conn, uint8_t *bytes, uint64_t length)
Callback the core invokes when there's new incoming data on a DATAGRAM.
Definition moq.c:194
 
size_t imquic_moq_add_track_status_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t track_alias, uint64_t expires, imquic_moq_group_order group_order, gboolean content_exists, uint64_t largest_group_id, uint64_t largest_object_id, imquic_moq_subscribe_parameters *parameters)
Helper method to add a TRACK_STATUS_OK message to a buffer.
Definition moq.c:5351
 
void imquic_moq_qlog_fetch_header_created(imquic_qlog *qlog, imquic_moq_stream *stream)
Add a fetch_header_created event.
Definition moq.c:7816
 
void imquic_moq_qlog_control_message_created(imquic_qlog *qlog, uint64_t stream_id, size_t length, json_t *message)
Add a control_message_created event.
Definition moq.c:7649
 
imquic_moq_subscribe_parameter_type
MoQ subscribe parameter types.
Definition internal/moq.h:188
 
@ IMQUIC_MOQ_SUB_PARAM_MAX_CACHE_DURATION
Definition internal/moq.h:194
 
@ IMQUIC_MOQ_SUB_PARAM_AUTHORIZATION_TOKEN_v11
Definition internal/moq.h:189
 
@ IMQUIC_MOQ_SUB_PARAM_AUTHORIZATION_INFO
Definition internal/moq.h:190
 
@ IMQUIC_MOQ_SUB_PARAM_DELIVERY_TIMEOUT_LEGACY
Definition internal/moq.h:192
 
@ IMQUIC_MOQ_SUB_PARAM_AUTHORIZATION_TOKEN
Definition internal/moq.h:193
 
@ IMQUIC_MOQ_SUB_PARAM_DELIVERY_TIMEOUT
Definition internal/moq.h:191
 
size_t imquic_moq_add_fetch_header_object(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t group_id, uint64_t subgroup_id, uint64_t object_id, uint8_t priority, uint64_t object_status, uint8_t *payload, size_t plen, size_t extensions_count, uint8_t *extensions, size_t elen)
Helper to add an object to a buffer, formatted as expected for FETCH_HEADER objects (so not all IDs) ...
Definition moq.c:5606
 
const char * imquic_moq_setup_parameter_type_str(imquic_moq_setup_parameter_type type)
Helper function to serialize to string the name of a imquic_moq_setup_parameter_type value.
Definition moq.c:786
 
void imquic_moq_qlog_object_datagram_parsed(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_parsed event.
Definition moq.c:7705
 
size_t imquic_moq_parameter_add_int(imquic_moq_context *moq, uint8_t *bytes, size_t blen, int param, uint64_t number)
Helper to add a MoQ (setup or subscribe) parameter with a numeric value to a buffer.
Definition moq.c:5695
 
size_t imquic_moq_parse_fetch_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a FETCH_OK message.
Definition moq.c:3243
 
size_t imquic_moq_parse_subscribe(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE message.
Definition moq.c:2319
 
void imquic_moq_buffer_append(imquic_moq_buffer *buffer, uint8_t *bytes, uint64_t length)
Append data at the end of the buffer.
Definition moq.c:1015
 
void imquic_moq_qlog_object_datagram_status_created(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_status_created event.
Definition moq.c:7720
 
struct imquic_moq_stream imquic_moq_stream
MoQ stream.
 
size_t imquic_moq_add_unsubscribe(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id)
Helper method to add an UNSUBSCRIBE message to a buffer.
Definition moq.c:4958
 
GMutex imquic_mutex
imquic mutex implementation
Definition mutex.h:18
 
Reference counter mechanism.
 
QUIC Connection.
Definition connection.h:114
 
MoQ buffer.
Definition internal/moq.h:294
 
uint64_t length
Size of the data currently in the buffer.
Definition internal/moq.h:298
 
uint8_t * bytes
Buffer containing the data.
Definition internal/moq.h:296
 
uint64_t size
Overall size of the buffer.
Definition internal/moq.h:300
 
MoQ public callbacks.
Definition internal/moq.h:1309
 
void(* incoming_track_status)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_name *tn, uint8_t priority, gboolean descending, gboolean forward, imquic_moq_filter_type filter_type, imquic_moq_location *start_location, imquic_moq_location *end_location, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming TRACK_STATUS messages.
Definition internal/moq.h:1372
 
void(* incoming_object)(imquic_connection *conn, imquic_moq_object *object)
Callback function to be notified about incoming MoQ objects.
Definition internal/moq.h:1379
 
void(* track_status_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_sub_error_code error_code, const char *reason)
Callback function to be notified about incoming TRACK_STATUS_ERROR messages.
Definition internal/moq.h:1377
 
void(* new_connection)(imquic_connection *conn, void *user_data)
Callback function to be notified about new QUIC connections, before MoQ has been involved.
Definition internal/moq.h:1311
 
void(* incoming_goaway)(imquic_connection *conn, const char *uri)
Callback function to be notified about incoming GOAWAY messages.
Definition internal/moq.h:1381
 
void(* incoming_unsubscribe_namespace)(imquic_connection *conn, imquic_moq_namespace *tns)
Callback function to be notified about incoming UNSUBSCRIBE_NAMESPACE messages.
Definition internal/moq.h:1359
 
void(* fetch_accepted)(imquic_connection *conn, uint64_t request_id, gboolean descending, imquic_moq_location *largest)
Callback function to be notified about incoming FETCH_ACCEPTED messages.
Definition internal/moq.h:1368
 
void(* incoming_standalone_fetch)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_name *tn, gboolean descending, imquic_moq_location_range *range, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming FETCH messages.
Definition internal/moq.h:1361
 
void(* subscribe_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_subns_error_code error_code, const char *reason)
Callback function to be notified about incoming SUBSCRIBE_NAMESPACE_ERROR messages.
Definition internal/moq.h:1357
 
void(* publish_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Callback function to be notified about incoming PUBLISH_NAMESPACE_ACCEPTED messages.
Definition internal/moq.h:1324
 
void(* publish_accepted)(imquic_connection *conn, uint64_t request_id, gboolean forward, uint8_t priority, gboolean descending, imquic_moq_filter_type filter_type, imquic_moq_location *start_location, imquic_moq_location *end_location, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming PUBLISH_ACCEPTED messages.
Definition internal/moq.h:1333
 
void(* track_status_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, uint64_t expires, gboolean descending, imquic_moq_location *largest)
Callback function to be notified about incoming TRACK_STATUS_ACCEPTED messages.
Definition internal/moq.h:1375
 
void(* incoming_publish_namespace_cancel)(imquic_connection *conn, imquic_moq_namespace *tns, imquic_moq_publish_namespace_error_code error_code, const char *reason)
Callback function to be notified about incoming PUBLISH_NAMESPACE_CANCEL messages.
Definition internal/moq.h:1322
 
void(* incoming_unsubscribe)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified about incoming UNBSUBSCRIBE messages.
Definition internal/moq.h:1349
 
void(* requests_blocked)(imquic_connection *conn, uint64_t max_request_id)
Callback function to be notified about incoming REQUESTS_BLOCKED messages.
Definition internal/moq.h:1351
 
void(* subscribe_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Callback function to be notified about incoming SUBSCRIBE_NAMESPACE_ACCEPTED messages.
Definition internal/moq.h:1355
 
void(* incoming_subscribe)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_namespace *tns, imquic_moq_name *tn, uint8_t priority, gboolean descending, gboolean forward, imquic_moq_filter_type filter_type, imquic_moq_location *start_location, imquic_moq_location *end_location, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming SUBSCRIBE messages.
Definition internal/moq.h:1338
 
void(* incoming_publish)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_name *tn, uint64_t track_alias, gboolean descending, imquic_moq_location *largest, gboolean forward, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming PUBLISH messages.
Definition internal/moq.h:1330
 
void(* incoming_joining_fetch)(imquic_connection *conn, uint64_t request_id, uint64_t joining_request_id, gboolean absolute, uint64_t joining_start, gboolean descending, uint8_t *auth, size_t authlen)
Definition internal/moq.h:1363
 
void(* incoming_publish_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming PUBLISH_NAMESPACE messages.
Definition internal/moq.h:1320
 
void(* subscribe_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, uint64_t expires, gboolean descending, imquic_moq_location *largest)
Callback function to be notified about incoming SUBSCRIBE_ACCEPTED messages.
Definition internal/moq.h:1341
 
void(* subscribe_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_sub_error_code error_code, const char *reason, uint64_t track_alias)
Callback function to be notified about incoming SUBSCRIBE_ERROR messages.
Definition internal/moq.h:1343
 
void(* publish_done)(imquic_connection *conn, uint64_t request_id, imquic_moq_sub_done_code status_code, uint64_t streams_count, const char *reason)
Callback function to be notified about incoming PUBLISH_DONE messages.
Definition internal/moq.h:1347
 
void(* publish_namespace_done)(imquic_connection *conn, imquic_moq_namespace *tns)
Callback function to be notified about incoming PUBLISH_NAMESPACE_DONE messages.
Definition internal/moq.h:1328
 
void(* fetch_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_fetch_error_code error_code, const char *reason)
Callback function to be notified about incoming FETCH_ERROR messages.
Definition internal/moq.h:1370
 
void(* publish_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_publish_namespace_error_code error_code, const char *reason)
Callback function to be notified about incoming PUBLISH_NAMESPACE_ERROR messages.
Definition internal/moq.h:1326
 
uint64_t(* incoming_moq_connection)(imquic_connection *conn, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming CLIENT_SETUP messages.
Definition internal/moq.h:1316
 
void(* incoming_subscribe_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, uint8_t *auth, size_t authlen)
Callback function to be notified about incoming SUBSCRIBE_NAMESPACE messages.
Definition internal/moq.h:1353
 
void(* subscribe_updated)(imquic_connection *conn, uint64_t request_id, uint64_t sub_request_id, imquic_moq_location *start_location, uint64_t end_group, uint8_t priority, gboolean forward)
Callback function to be notified about incoming SUBSCRIBE_UPDATE messages.
Definition internal/moq.h:1345
 
void(* publish_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_pub_error_code error_code, const char *reason)
Callback function to be notified about incoming PUBLISH_ERROR messages.
Definition internal/moq.h:1336
 
void(* incoming_fetch_cancel)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified about incoming FETCH_CANCEL messages.
Definition internal/moq.h:1366
 
void(* connection_gone)(imquic_connection *conn)
Callback function to be notified about MoQ connections being closed.
Definition internal/moq.h:1383
 
void(* moq_ready)(imquic_connection *conn)
Callback function to be notified when a MoQ connection is ready (setup performed on both ends)
Definition internal/moq.h:1318
 
MoQ context.
Definition internal/moq.h:325
 
volatile gint destroyed
Whether this instance has been destroyed (reference counting)
Definition internal/moq.h:371
 
imquic_moq_version version
Negotiated version.
Definition internal/moq.h:331
 
uint64_t next_request_id
Definition internal/moq.h:359
 
uint64_t control_stream_offset
Current offset of the control stream on the way out.
Definition internal/moq.h:351
 
uint64_t local_max_request_id
Definition internal/moq.h:361
 
gboolean version_set
Whether a version has been set.
Definition internal/moq.h:333
 
uint64_t control_stream_id
ID of the control stream.
Definition internal/moq.h:349
 
size_t authlen
Size of the auth data to use when connecting (clients only)
Definition internal/moq.h:341
 
imquic_refcount ref
Reference counter.
Definition internal/moq.h:373
 
gboolean has_control_stream
Whether a MoQ control stream has been established.
Definition internal/moq.h:347
 
uint64_t max_auth_token_cache_size
Maximum Request IDs we can send and the one we accept.
Definition internal/moq.h:363
 
uint64_t max_request_id
Maximum Request IDs we can send and the one we accept.
Definition internal/moq.h:361
 
imquic_moq_role_type type
Role of this endpoint.
Definition internal/moq.h:335
 
GHashTable * subscriptions
Subscriptions this connection will send objects to, indexed by track_alias.
Definition internal/moq.h:355
 
uint64_t expected_request_id
Current Request IDs we expect and we can send.
Definition internal/moq.h:359
 
GHashTable * streams
QUIC streams handled by the stack.
Definition internal/moq.h:353
 
gboolean role_set
Whether a role has been set.
Definition internal/moq.h:337
 
uint8_t * auth
Auth data to use when connecting (clients only)
Definition internal/moq.h:339
 
gboolean auth_set
Whether the auth data has been set.
Definition internal/moq.h:343
 
gboolean is_server
Whether this is a QUIC server or client.
Definition internal/moq.h:345
 
imquic_mutex mutex
Mutex.
Definition internal/moq.h:367
 
uint64_t local_max_auth_token_cache_size
Definition internal/moq.h:363
 
imquic_connection * conn
Associated QUIC connection.
Definition internal/moq.h:327
 
GHashTable * subscriptions_by_id
Subscriptions this connection will send objects to, indexed by request_id.
Definition internal/moq.h:357
 
volatile gint connected
Whether we have established a connection.
Definition internal/moq.h:369
 
imquic_moq_buffer * buffer
Buffer to process incoming messages.
Definition internal/moq.h:365
 
GList * supported_versions
Peer versions.
Definition internal/moq.h:329
 
MoQ location range (from where to where, e.g., for FETCH)
Definition imquic/moq.h:403
 
MoQ Group/Object couple (for ranges)
Definition imquic/moq.h:397
 
MoQ Track Name.
Definition imquic/moq.h:371
 
MoQ Track Namespace.
Definition imquic/moq.h:351
 
MoQ Object.
Definition imquic/moq.h:494
 
MoQ setup parameters.
Definition internal/moq.h:215
 
char path[256]
Value of the PATH parameter.
Definition internal/moq.h:223
 
uint8_t auth_token[256]
Value of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:235
 
gboolean max_request_id_set
Whether the MAX_REQUEST_ID parameter is set.
Definition internal/moq.h:225
 
imquic_moq_role_type role
Value of the ROLE parameter.
Definition internal/moq.h:219
 
gboolean moqt_implementation_set
Whether the MOQT_IMPLEMENTATION parameter is set.
Definition internal/moq.h:243
 
size_t auth_token_len
Size of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:237
 
gboolean max_auth_token_cache_size_set
Whether the MAX_AUTH_TOKEN_CACHE_SIZE parameter is set.
Definition internal/moq.h:229
 
char authority[256]
Value of the AUTHORITY parameter.
Definition internal/moq.h:241
 
gboolean role_set
Whether the ROLE parameter is set.
Definition internal/moq.h:217
 
uint64_t max_auth_token_cache_size
Value of the MAX_AUTH_TOKEN_CACHE_SIZE parameter.
Definition internal/moq.h:231
 
gboolean unknown
Whether there's unknown parameters.
Definition internal/moq.h:247
 
gboolean path_set
Whether the PATH parameter is set.
Definition internal/moq.h:221
 
gboolean auth_token_set
Whether the AUTHORIZATION_TOKEN parameter is set.
Definition internal/moq.h:233
 
uint64_t max_request_id
Value of the MAX_REQUEST_ID parameter.
Definition internal/moq.h:227
 
gboolean authority_set
Whether the AUTHORITY parameter is set.
Definition internal/moq.h:239
 
char moqt_implementation[256]
Value of the MOQT_IMPLEMENTATION parameter.
Definition internal/moq.h:245
 
MoQ stream.
Definition internal/moq.h:377
 
uint64_t stream_offset
Current stream offset.
Definition internal/moq.h:397
 
uint64_t subgroup_id
Subgroup ID.
Definition internal/moq.h:389
 
uint64_t last_object_id
Last Object ID handled.
Definition internal/moq.h:403
 
uint8_t priority
Publisher priority.
Definition internal/moq.h:395
 
imquic_moq_object_status object_status
Object status.
Definition internal/moq.h:393
 
imquic_moq_data_message_type type
Delivery mode for this stream.
Definition internal/moq.h:379
 
imquic_moq_buffer * buffer
Buffer to process incoming messages/objects.
Definition internal/moq.h:399
 
uint64_t stream_id
QUIC stream ID.
Definition internal/moq.h:381
 
gboolean closed
Whether we closed this stream.
Definition internal/moq.h:405
 
uint64_t track_alias
Track alias.
Definition internal/moq.h:385
 
gboolean got_objects
Whether we got at least an object on this stream.
Definition internal/moq.h:401
 
uint64_t group_id
Group ID.
Definition internal/moq.h:387
 
uint64_t object_id
Object ID.
Definition internal/moq.h:391
 
uint64_t request_id
ID of the subscription.
Definition internal/moq.h:383
 
MoQ subscribe parameters.
Definition internal/moq.h:251
 
gboolean max_cache_duration_set
Whether the MAX_CACHE_DURATION parameter is set.
Definition internal/moq.h:263
 
uint8_t auth_token[256]
Value of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:255
 
uint64_t delivery_timeout
Value of the DELIVERY_TIMEOUT parameter.
Definition internal/moq.h:261
 
gboolean unknown
Whether there's unknown parameters.
Definition internal/moq.h:267
 
gboolean auth_token_set
Whether the AUTHORIZATION_TOKEN parameter is set.
Definition internal/moq.h:253
 
uint64_t max_cache_duration
Value of the MAX_CACHE_DURATION parameter.
Definition internal/moq.h:265
 
gboolean delivery_timeout_set
Whether the DELIVERY_TIMEOUT parameter is set.
Definition internal/moq.h:259
 
size_t auth_token_len
Size of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:257
 
MoQ subscription, whether this is a publisher or a subscriber.
Definition internal/moq.h:412
 
size_t streams_count
Count of how many streams were used for this subscription.
Definition internal/moq.h:424
 
uint64_t request_id
ID of the subscription.
Definition internal/moq.h:414
 
uint64_t track_alias
Track alias.
Definition internal/moq.h:416
 
imquic_moq_stream * stream
Stream for this subscription, in case it's a single one.
Definition internal/moq.h:420
 
gboolean fetch
Whether this is a FETCH.
Definition internal/moq.h:418
 
GHashTable * streams_by_subgroup
Streams for this subscription, indexed by subgroup.
Definition internal/moq.h:422
 
QLOG instance.
Definition qlog.h:49
 
Generic utilities (headers)