18#ifndef IMQUIC_MOQ_INTERNAL_H
19#define IMQUIC_MOQ_INTERNAL_H
32#define IMQUIC_MOQ 7171953
104 gboolean payload, gboolean ext, gboolean eog, gboolean oid, gboolean priority);
116 gboolean *payload, gboolean *ext, gboolean *eog, gboolean *oid, gboolean *priority, gboolean *violation);
156 gboolean subgroup, gboolean sgid0, gboolean ext, gboolean eog, gboolean priority);
167 gboolean *subgroup, gboolean *sgid0, gboolean *ext, gboolean *eog, gboolean *priority, gboolean *violation);
205 gboolean datagram, gboolean end_ne_range, gboolean end_uk_range);
220 gboolean *datagram, gboolean *end_ne_range, gboolean *end_uk_range, gboolean *violation);
880 uint8_t *bytes,
size_t blen, uint64_t request_id, uint64_t error,
const char *reason, uint64_t retry_interval);
1089 uint64_t request_id, uint64_t joining_request_id, uint64_t preceding_group_offset,
1176 uint64_t group_id, uint64_t object_id, uint64_t object_status, uint8_t priority,
1177 uint8_t *payload,
size_t plen, uint8_t *extensions,
size_t elen);
1192 uint64_t track_alias, uint64_t group_id, uint64_t object_id, uint8_t priority,
1193 uint64_t object_status, uint8_t *extensions,
size_t elen);
1209 uint64_t request_id, uint64_t track_alias, uint64_t group_id, uint64_t subgroup_id, uint8_t priority);
1224 uint8_t *bytes,
size_t blen, uint64_t object_id, uint64_t object_status,
1225 uint8_t *payload,
size_t plen, uint8_t *extensions,
size_t elen);
1253 uint64_t flags, uint64_t group_id, uint64_t subgroup_id, uint64_t object_id, uint8_t priority,
1254 uint64_t object_status, uint8_t *payload,
size_t plen, uint8_t *extensions,
size_t elen);
1263 uint8_t *extensions,
size_t elen);
1300 uint64_t param, uint64_t prev, uint64_t number);
1311 uint64_t param, uint64_t prev, uint8_t *buf,
size_t buflen);
1321 uint8_t *bytes,
size_t blen, uint8_t *params_num);
1332 uint8_t *bytes,
size_t blen, uint8_t *params_num);
1436 uint8_t *bytes, uint64_t length, gboolean complete);
imquic MoQ public interface (headers)
imquic_moq_object_status
MoQ Object status.
Definition imquic/moq.h:519
imquic_moq_request_error_code
Request error codes.
Definition imquic/moq.h:695
imquic_moq_version
Versions that can be negotiated.
Definition imquic/moq.h:1067
imquic_moq_subscribe_namespace_options
Subscribe options for namespaces.
Definition imquic/moq.h:415
imquic_moq_pub_done_code
Publish done codes.
Definition imquic/moq.h:720
imquic_moq_delivery
Ways of sending objects.
Definition imquic/moq.h:505
imquic public interface (headers)
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:8814
json_t * imquic_qlog_moq_message_prepare(const char *type)
Helper to create a new QLOG MoQT message.
Definition moq.c:8511
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:2570
void imquic_moq_qlog_control_message_created(imquic_qlog *qlog, uint64_t stream_id, uint8_t *bytes, size_t length, json_t *message)
Add a control_message_created event.
Definition moq.c:8717
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, imquic_moq_request_parameters *parameters)
Helper method to add a TRACK_STATUS_OK message to a buffer.
Definition moq.c:6062
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:1563
imquic_moq_request_parameter_type
MoQ request parameter types.
Definition internal/moq.h:237
@ IMQUIC_MOQ_REQUEST_PARAM_EXPIRES
Definition internal/moq.h:246
@ IMQUIC_MOQ_REQUEST_PARAM_GROUP_ORDER
Definition internal/moq.h:244
@ IMQUIC_MOQ_REQUEST_PARAM_DYNAMIC_GROUPS
Definition internal/moq.h:249
@ IMQUIC_MOQ_REQUEST_PARAM_LARGEST_OBJECT
Definition internal/moq.h:247
@ IMQUIC_MOQ_REQUEST_PARAM_NEW_GROUP_REQUEST
Definition internal/moq.h:250
@ IMQUIC_MOQ_REQUEST_PARAM_SUBSCRIBER_PRIORITY
Definition internal/moq.h:243
@ IMQUIC_MOQ_REQUEST_PARAM_SUBSCRIPTION_FILTER
Definition internal/moq.h:245
@ IMQUIC_MOQ_REQUEST_PARAM_MAX_CACHE_DURATION
Definition internal/moq.h:241
@ IMQUIC_MOQ_REQUEST_PARAM_FORWARD
Definition internal/moq.h:248
@ IMQUIC_MOQ_REQUEST_PARAM_PUBLISHER_PRIORITY
Definition internal/moq.h:242
@ IMQUIC_MOQ_REQUEST_PARAM_AUTHORIZATION_TOKEN
Definition internal/moq.h:239
@ IMQUIC_MOQ_REQUEST_PARAM_AUTHORIZATION_TOKEN_v11
Definition internal/moq.h:238
@ IMQUIC_MOQ_REQUEST_PARAM_DELIVERY_TIMEOUT
Definition internal/moq.h:240
void imquic_moq_qlog_subgroup_header_parsed(imquic_qlog *qlog, imquic_moq_stream *stream, uint8_t *bytes, size_t length)
Add a subgroup_header_parsed event.
Definition moq.c:8849
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:5012
size_t imquic_moq_add_fetch_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint8_t end_of_track, imquic_moq_location *end_location, imquic_moq_request_parameters *parameters, GList *track_extensions)
Helper method to add a FETCH_OK message to a buffer.
Definition moq.c:5919
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:4984
size_t imquic_moq_add_namespace_done(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, imquic_moq_namespace *track_namespace_suffix)
Helper method to add a NAMESPACE_DONE message to a buffer.
Definition moq.c:5721
gboolean imquic_moq_buffer_resize(imquic_moq_buffer *buffer, uint64_t new_size)
Resize an existing buffer.
Definition moq.c:1374
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:4457
void imquic_moq_data_message_type_to_subgroup_header(imquic_moq_version version, uint8_t type, gboolean *subgroup, gboolean *sgid0, gboolean *ext, gboolean *eog, gboolean *priority, gboolean *violation)
Helper function to parse a type value for SUBRGOUP_HEADER to the individual properties.
Definition moq.c:867
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:3417
void imquic_moq_datagram_message_type_parse(imquic_moq_version version, uint8_t type, gboolean *payload, gboolean *ext, gboolean *eog, gboolean *oid, gboolean *priority, gboolean *violation)
Helper function to parse a imquic_moq_datagram_message_type value for OBJECT_DATAGRAM or OBJECT_DATAG...
Definition moq.c:739
size_t imquic_moq_parse_subscribe_namespace(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_NAMESPACE message.
Definition moq.c:3476
size_t imquic_moq_add_publish_namespace_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_error_code error, const char *reason)
Helper method to add a PUBLISH_NAMESPACE_ERROR message to a buffer.
Definition moq.c:5161
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:6213
void imquic_moq_parse_fetch_serialization_flags(imquic_moq_version version, uint64_t flags, imquic_moq_fetch_subgroup_type *subgroup, gboolean *oid, gboolean *group, gboolean *priority, gboolean *ext, gboolean *datagram, gboolean *end_ne_range, gboolean *end_uk_range, gboolean *violation)
Helper function to parse serialozation flags for FETCH to the individual properties.
Definition moq.c:996
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:2782
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:5194
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:5032
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:8886
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:4076
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:8546
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:3191
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:1416
void imquic_moq_subscription_destroy(imquic_moq_subscription *moq_sub)
Destroy an existing MoQ subscription.
Definition moq.c:1426
gboolean imquic_moq_is_fetch_serialization_flags_valid(imquic_moq_version version, uint64_t flags)
Helper function to check if serialization flags used for FETCH are valid.
Definition moq.c:960
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:4208
size_t imquic_moq_add_request_ok(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_parameters *parameters)
Helper method to add a REQUEST_OK message to a buffer.
Definition moq.c:5052
imquic_moq_setup_parameter_type
MoQ setup parameter types.
Definition internal/moq.h:223
@ IMQUIC_MOQ_SETUP_PARAM_AUTHORITY
Definition internal/moq.h:228
@ IMQUIC_MOQ_SETUP_PARAM_AUTHORIZATION_TOKEN
Definition internal/moq.h:226
@ IMQUIC_MOQ_SETUP_PARAM_MAX_REQUEST_ID
Definition internal/moq.h:225
@ IMQUIC_MOQ_SETUP_PARAM_PATH
Definition internal/moq.h:224
@ IMQUIC_MOQ_SETUP_PARAM_MOQT_IMPLEMENTATION
Definition internal/moq.h:229
@ IMQUIC_MOQ_SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE
Definition internal/moq.h:227
void imquic_moq_stream_destroy(imquic_moq_stream *moq_stream)
Destroy an existing MoQ stream.
Definition moq.c:1435
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:3586
size_t imquic_moq_request_parameters_serialize(imquic_moq_context *moq, imquic_moq_request_parameters *parameters, uint8_t *bytes, size_t blen, uint8_t *params_num)
Helper to serialize a imquic_moq_request_parameters set to a buffer.
Definition moq.c:1256
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:2890
void imquic_moq_qlog_fetch_header_parsed(imquic_qlog *qlog, imquic_moq_stream *stream, uint8_t *bytes, size_t length)
Add a fetch_header_parsed event.
Definition moq.c:8919
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:2235
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:4711
size_t imquic_moq_add_object_extensions(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *extensions, size_t elen)
Helper method to add object extensions to a buffer.
Definition moq.c:6350
size_t imquic_moq_add_subscribe_namespace_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id)
Helper method to add a SUBSCRIBE_NAMESPACE_OK message to a buffer.
Definition moq.c:5744
void imquic_moq_buffer_destroy(imquic_moq_buffer *buffer)
Destroy an existing buffer.
Definition moq.c:1409
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:4544
GList * imquic_moq_parse_object_extensions(imquic_moq_version version, uint8_t *extensions, size_t elen)
Helper mode to parse an extensions buffer to a GList of imquic_moq_object_extension.
Definition moq.c:6757
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_request_parameters *parameters)
Helper method to add a PUBLISH_NAMESPACE message to a buffer.
Definition moq.c:5114
imquic_moq_datagram_message_type
MoQ datagram messages.
Definition internal/moq.h:83
@ IMQUIC_MOQ_OBJECT_DATAGRAM
Definition internal/moq.h:84
@ IMQUIC_MOQ_OBJECT_DATAGRAM_RANGE_MAX
Definition internal/moq.h:87
@ IMQUIC_MOQ_OBJECT_DATAGRAM_RANGE_MIN
Definition internal/moq.h:86
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS
Definition internal/moq.h:85
gboolean imquic_moq_is_datagram_message_type_valid(imquic_moq_version version, uint8_t type)
Helper function to check if a type used for OBJECT_DATAGRAM or OBJECT_DATAGRAM_STATUS is valid.
Definition moq.c:675
const char * imquic_moq_message_type_str(imquic_moq_message_type type, imquic_moq_version version)
Helper function to serialize to string the name of a imquic_moq_message_type value.
Definition moq.c:552
void imquic_moq_qlog_control_message_parsed(imquic_qlog *qlog, uint64_t stream_id, uint8_t *bytes, size_t length, json_t *message)
Add a control_message_parsed event.
Definition moq.c:8734
size_t imquic_moq_add_subscribe_namespace(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace, imquic_moq_subscribe_namespace_options subscribe_options, imquic_moq_request_parameters *parameters)
Helper to add a SUBSCRIBE_NAMESPACE message to a buffer.
Definition moq.c:5662
uint64_t imquic_moq_generate_fetch_serialization_flags(imquic_moq_version version, imquic_moq_fetch_subgroup_type subgroup, gboolean oid, gboolean group, gboolean priority, gboolean ext, gboolean datagram, gboolean end_ne_range, gboolean end_uk_range)
Helper function to return the serialization flags to use for FETCH out of the individual properties.
Definition moq.c:971
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, imquic_moq_request_parameters *parameters)
Helper to add a TRACK_STATUS message to a buffer.
Definition moq.c:6002
imquic_moq_message_type
MoQ messages.
Definition internal/moq.h:40
@ IMQUIC_MOQ_SUBSCRIBE_ERROR
Definition internal/moq.h:46
@ IMQUIC_MOQ_CLIENT_SETUP
Definition internal/moq.h:70
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_OK
Definition internal/moq.h:48
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE_OK
Definition internal/moq.h:59
@ IMQUIC_MOQ_FETCH
Definition internal/moq.h:66
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE_ERROR
Definition internal/moq.h:60
@ IMQUIC_MOQ_REQUEST_ERROR
Definition internal/moq.h:42
@ IMQUIC_MOQ_MAX_REQUEST_ID
Definition internal/moq.h:64
@ IMQUIC_MOQ_FETCH_CANCEL
Definition internal/moq.h:67
@ IMQUIC_MOQ_REQUEST_UPDATE
Definition internal/moq.h:43
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE
Definition internal/moq.h:58
@ IMQUIC_MOQ_SUBSCRIBE
Definition internal/moq.h:44
@ IMQUIC_MOQ_PUBLISH_ERROR
Definition internal/moq.h:74
@ IMQUIC_MOQ_FETCH_OK
Definition internal/moq.h:68
@ IMQUIC_MOQ_UNSUBSCRIBE
Definition internal/moq.h:51
@ IMQUIC_MOQ_FETCH_ERROR
Definition internal/moq.h:69
@ IMQUIC_MOQ_UNSUBSCRIBE_NAMESPACE
Definition internal/moq.h:61
@ IMQUIC_MOQ_TRACK_STATUS_ERROR
Definition internal/moq.h:56
@ IMQUIC_MOQ_REQUEST_OK
Definition internal/moq.h:41
@ IMQUIC_MOQ_PUBLISH_NAMESPACE
Definition internal/moq.h:47
@ IMQUIC_MOQ_GOAWAY
Definition internal/moq.h:57
@ IMQUIC_MOQ_PUBLISH_DONE
Definition internal/moq.h:52
@ IMQUIC_MOQ_NAMESPACE_DONE
Definition internal/moq.h:63
@ IMQUIC_MOQ_TRACK_STATUS_OK
Definition internal/moq.h:55
@ IMQUIC_MOQ_PUBLISH_OK
Definition internal/moq.h:73
@ IMQUIC_MOQ_SERVER_SETUP
Definition internal/moq.h:71
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_ERROR
Definition internal/moq.h:49
@ IMQUIC_MOQ_PUBLISH
Definition internal/moq.h:72
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_CANCEL
Definition internal/moq.h:53
@ IMQUIC_MOQ_PUBLISH_NAMESPACE_DONE
Definition internal/moq.h:50
@ IMQUIC_MOQ_SUBSCRIBE_OK
Definition internal/moq.h:45
@ IMQUIC_MOQ_NAMESPACE
Definition internal/moq.h:62
@ IMQUIC_MOQ_REQUESTS_BLOCKED
Definition internal/moq.h:65
@ IMQUIC_MOQ_TRACK_STATUS
Definition internal/moq.h:54
void imquic_moq_qlog_subgroup_header_created(imquic_qlog *qlog, imquic_moq_stream *stream, uint8_t *bytes, size_t length)
Add a subgroup_header_created event.
Definition moq.c:8832
size_t imquic_moq_add_namespace(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, imquic_moq_namespace *track_namespace_suffix)
Helper method to add a NAMESPACE_DONE message to a buffer.
Definition moq.c:5698
size_t imquic_moq_parameter_add_int(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t param, uint64_t prev, uint64_t number)
Helper to add a MoQ (setup or subscribe) parameter with a numeric value to a buffer.
Definition moq.c:6371
size_t imquic_moq_parse_namespace_done(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a NAMESPACE_DONE message.
Definition moq.c:3706
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:936
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:4374
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:5899
size_t imquic_moq_parse_request_parameter(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_request_parameters *params, uint64_t *param_type, uint8_t *error)
Helper method to parse a MoQ subscribe parameter.
Definition moq.c:6510
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, uint8_t *extensions, size_t elen)
Helper to add an OBJECT_DATAGRAM message to a buffer.
Definition moq.c:6176
const char * imquic_moq_request_parameter_type_str(imquic_moq_request_parameter_type type, imquic_moq_version version)
Helper function to serialize to string the name of a imquic_moq_request_parameter_type value.
Definition moq.c:1071
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:3637
size_t imquic_moq_parse_request_error(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a REQUEST_ERROR message.
Definition moq.c:2332
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_request_error_code error, const char *reason)
Helper method to add aN PUBLISH_NAMESPACE_CANCEL message to a buffer.
Definition moq.c:5214
size_t imquic_moq_add_subscribe_namespace_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_error_code error, const char *reason)
Helper method to add a SUBSCRIBE_NAMESPACE_ERRROR message to a buffer.
Definition moq.c:5764
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:3738
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:1398
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:8951
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.
Definition moq.c:6246
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:8751
void imquic_moq_deinit(void)
Uninitialize the native MoQ stack.
Definition moq.c:46
size_t imquic_moq_add_track_status_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_error_code error, const char *reason)
Helper method to add a TRACK_STATUS_ERRROR message to a buffer.
Definition moq.c:6113
size_t imquic_moq_add_publish_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_error_code error, const char *reason)
Helper method to add a PUBLISH_ERRROR message to a buffer.
Definition moq.c:5367
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:2517
imquic_moq_legacy_error_code
MoQ legacy (pre-v15) error codes and translation to/from new ones.
Definition internal/moq.h:317
@ IMQUIC_MOQ_OLDERR_INTERNAL_ERROR
Definition internal/moq.h:318
@ IMQUIC_MOQ_OLDERR_MALFORMED_AUTH_TOKEN
Definition internal/moq.h:328
@ IMQUIC_MOQ_OLDERR_NOT_SUPPORTED
Definition internal/moq.h:321
@ IMQUIC_MOQ_OLDERR_UNAUTHORIZED
Definition internal/moq.h:319
@ IMQUIC_MOQ_OLDERR_MALFORMED_TRACK
Definition internal/moq.h:327
@ IMQUIC_MOQ_OLDERR_TRACK_DOES_NOT_EXIST
Definition internal/moq.h:323
@ IMQUIC_MOQ_OLDERR_TIMEOUT
Definition internal/moq.h:320
@ IMQUIC_MOQ_OLDERR_INVALID_JOINING_REQUEST_ID
Definition internal/moq.h:325
@ IMQUIC_MOQ_OLDERR_UNKNOWN_STATUS_IN_RANGE
Definition internal/moq.h:326
@ IMQUIC_MOQ_OLDERR_INVALID_RANGE
Definition internal/moq.h:324
@ IMQUIC_MOQ_OLDERR_UNINTERESTED
Definition internal/moq.h:322
@ IMQUIC_MOQ_OLDERR_EXPIRED_AUTH_TOKEN
Definition internal/moq.h:329
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:2487
imquic_moq_request_error_code imquic_moq_request_error_code_from_legacy(imquic_moq_version version, imquic_moq_legacy_error_code code)
Helper to translate a legacy error code parsed by the stack to a new request error code,...
Definition moq.c:472
uint8_t imquic_moq_data_message_type_from_subgroup_header(imquic_moq_version version, gboolean subgroup, gboolean sgid0, gboolean ext, gboolean eog, gboolean priority)
Helper function to return the type to use for SUBRGOUP_HEADER out of the individual properties.
Definition moq.c:833
void imquic_moq_init(void)
Initialize the native MoQ stack at startup.
Definition moq.c:42
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:2647
imquic_moq_fetch_subgroup_type
MoQ FETCH subgroup flags.
Definition internal/moq.h:181
@ IMQUIC_MOQ_FETCH_SUBGROUP_ZERO
Definition internal/moq.h:182
@ IMQUIC_MOQ_FETCH_SUBGROUP_PREVIOUS
Definition internal/moq.h:183
@ IMQUIC_MOQ_FETCH_SUBGROUP_ID
Definition internal/moq.h:185
@ IMQUIC_MOQ_FETCH_SUBGROUP_PLUS_ONE
Definition internal/moq.h:184
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:1147
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:3556
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:4895
imquic_moq_data_message_type
MoQ STREAM data messages.
Definition internal/moq.h:124
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE2_MIN
Definition internal/moq.h:137
@ IMQUIC_MOQ_FETCH_HEADER
Definition internal/moq.h:140
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0_NOEXT_v11
Definition internal/moq.h:127
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE1_MIN
Definition internal/moq.h:135
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE1_MAX
Definition internal/moq.h:136
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOEXT_v11
Definition internal/moq.h:131
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID0_v11
Definition internal/moq.h:128
@ IMQUIC_MOQ_SUBGROUP_HEADER_v11
Definition internal/moq.h:132
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE2_MAX
Definition internal/moq.h:138
@ IMQUIC_MOQ_SUBGROUP_HEADER
Definition internal/moq.h:134
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID_NOEXT_v11
Definition internal/moq.h:129
@ IMQUIC_MOQ_SUBGROUP_HEADER_NOSGID_v11
Definition internal/moq.h:130
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:4739
size_t imquic_moq_add_unsubscribe_namespace(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_namespace *track_namespace)
Helper method to add an UNSUBSCRIBE_NAMESPACE message to a buffer.
Definition moq.c:5797
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:8866
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:3382
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:1179
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:2596
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:3315
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:120
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:8932
size_t imquic_moq_parse_request_ok(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a REQUEST_OK message.
Definition moq.c:2262
void imquic_moq_stream_incoming(imquic_connection *conn, uint64_t stream_id, uint8_t *bytes, uint64_t length, gboolean complete)
Callback the core invokes when there's new incoming data on a STREAM.
Definition moq.c:220
const char * imquic_moq_datagram_message_type_str(uint8_t type, imquic_moq_version version)
Helper function to serialize to string the name of a imquic_moq_datagram_message_type value.
Definition moq.c:792
size_t imquic_moq_add_fetch_header_object(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t flags, 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, 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:6307
size_t imquic_moq_parse_server_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SERVER_SETUP message.
Definition moq.c:2120
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, imquic_moq_request_parameters *parameters, GList *track_extensions)
Helper method to add a SUBSCRIBE_OK message to a buffer.
Definition moq.c:5512
void imquic_moq_qlog_object_datagram_created(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_created event.
Definition moq.c:8762
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:4318
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, imquic_moq_location_range *range, imquic_moq_request_parameters *parameters)
Helper to add a FETCH message to a buffer.
Definition moq.c:5824
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:8536
imquic_moq_fetch_type
MoQ FETCH types.
Definition internal/moq.h:306
@ IMQUIC_MOQ_FETCH_STANDALONE
Definition internal/moq.h:307
@ IMQUIC_MOQ_FETCH_JOINING_ABSOLUTE
Definition internal/moq.h:309
@ IMQUIC_MOQ_FETCH_JOINING_RELATIVE
Definition internal/moq.h:308
size_t imquic_moq_parse_setup_parameter(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_setup_parameters *params, uint64_t *param_type, uint8_t *error)
Helper method to parse a MoQ setup parameter.
Definition moq.c:6425
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:6146
void imquic_qlog_moq_message_add_extensions(json_t *message, GList *extensions, const char *name)
Helper to add a stringified array of extension headers to a message.
Definition moq.c:8696
size_t imquic_moq_parse_namespace(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a NAMESPACE message.
Definition moq.c:3674
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.
Definition moq.c:6296
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, imquic_moq_request_parameters *parameters, GList *track_extensions)
Helper to add a PUBLISH message to a buffer.
Definition moq.c:5247
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:4022
size_t imquic_moq_parse_client_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a CLIENT_SETUP message.
Definition moq.c:1967
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:3886
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:2208
void imquic_qlog_moq_message_add_request_parameters(json_t *message, imquic_moq_version version, imquic_moq_request_parameters *parameters, const char *name)
Helper to add a stringified array of subscribe parameters to a message.
Definition moq.c:8595
uint8_t imquic_moq_datagram_message_type_return(imquic_moq_version version, gboolean payload, gboolean ext, gboolean eog, gboolean oid, gboolean priority)
Helper function to return the imquic_moq_datagram_message_type value for OBJECT_DATAGRAM or OBJECT_DA...
Definition moq.c:688
size_t imquic_moq_add_request_error(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t error, const char *reason, uint64_t retry_interval)
Helper method to add a REQUEST_ERROR message to a buffer.
Definition moq.c:5078
void imquic_moq_connection_gone(imquic_connection *conn)
Callback the core invokes when an existing MoQ connection is not available anymore.
Definition moq.c:300
size_t imquic_moq_add_request_update(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t sub_request_id, imquic_moq_request_parameters *parameters)
Helper method to add a REQUEST_UPDATE message to a buffer.
Definition moq.c:5464
gboolean imquic_moq_is_data_message_type_valid(imquic_moq_version version, uint8_t type)
Helper function to check if a type used for SUBRGOUP_HEADER is valid.
Definition moq.c:817
size_t imquic_moq_add_fetch_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_error_code error, const char *reason)
Helper method to add a FETCH_ERRROR message to a buffer.
Definition moq.c:5969
void imquic_moq_reset_stream_incoming(imquic_connection *conn, uint64_t stream_id, uint64_t error_code)
Callback the core invokes when there's an incoming RESET_STREAM.
Definition moq.c:266
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:4938
size_t imquic_moq_add_publish_namespace_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id)
Helper method to add a PUBLISH_NAMESPACE_OK message to a buffer.
Definition moq.c:5141
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, 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:6268
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:913
size_t imquic_moq_add_publish_ok(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_parameters *parameters)
Helper method to add a PUBLISH_OK message to a buffer.
Definition moq.c:5312
size_t imquic_moq_build_object_extensions(imquic_moq_version version, GList *extensions, uint8_t *bytes, size_t blen)
Helper mode to craft an extensions buffer out of a GList of imquic_moq_object_extension.
Definition moq.c:6824
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:2433
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:4605
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:254
size_t imquic_moq_add_subscribe_error(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_request_error_code error, const char *reason, uint64_t track_alias)
Helper method to add a SUBSCRIBE_ERRROR message to a buffer.
Definition moq.c:5572
imquic_moq_legacy_error_code imquic_moq_request_error_code_to_legacy(imquic_moq_version version, imquic_moq_request_error_code code)
Helper to translate a new request error code passed by the user to a legacy error code,...
Definition moq.c:433
size_t imquic_moq_parse_request_update(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a REQUEST_UPDATE message.
Definition moq.c:3086
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:1052
void imquic_moq_qlog_fetch_header_created(imquic_qlog *qlog, imquic_moq_stream *stream, uint8_t *bytes, size_t length)
Add a fetch_header_created event.
Definition moq.c:8906
void imquic_moq_qlog_object_datagram_parsed(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_parsed event.
Definition moq.c:8779
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:3924
void imquic_qlog_moq_message_add_namespace(json_t *message, imquic_moq_namespace *track_namespace, const char *name)
Helper to add a stringified namespace tuple array to a message.
Definition moq.c:8519
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:2944
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:1385
size_t imquic_moq_add_publish_done(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id, imquic_moq_pub_done_code status, uint64_t streams_count, const char *reason)
Helper method to add a PUBLISH_DONE message to a buffer.
Definition moq.c:5629
size_t imquic_moq_parameter_add_data(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t param, uint64_t prev, uint8_t *buf, size_t buflen)
Helper to add a MoQ (setup or subscribe) parameter with generic data to a buffer.
Definition moq.c:6396
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:8796
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:5609
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, imquic_moq_request_parameters *parameters)
Helper to add a SUBSCRIBE message to a buffer.
Definition moq.c:5400
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:345
uint64_t length
Size of the data currently in the buffer.
Definition internal/moq.h:349
uint8_t * bytes
Buffer containing the data.
Definition internal/moq.h:347
uint64_t size
Overall size of the buffer.
Definition internal/moq.h:351
MoQ public callbacks.
Definition internal/moq.h:1336
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)
Callback function to be notified about incoming SUBSCRIBE_ERROR messages.
Definition internal/moq.h:1369
void(* incoming_object)(imquic_connection *conn, imquic_moq_object *object)
Callback function to be notified about incoming MoQ objects.
Definition internal/moq.h:1414
void(* incoming_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Callback function to be notified about incoming NAMESPACE messages.
Definition internal/moq.h:1392
void(* subscribe_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_extensions)
Callback function to be notified about incoming SUBSCRIBE_ACCEPTED messages.
Definition internal/moq.h:1367
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:1338
void(* fetch_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval)
Callback function to be notified about incoming FETCH_ERROR messages.
Definition internal/moq.h:1405
void(* subscribe_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming SUBSCRIBE_NAMESPACE_ACCEPTED messages.
Definition internal/moq.h:1386
void(* incoming_goaway)(imquic_connection *conn, const char *uri)
Callback function to be notified about incoming GOAWAY messages.
Definition internal/moq.h:1416
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)
Callback function to be notified about incoming TRACK_STATUS_ERROR messages.
Definition internal/moq.h:1412
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)
Callback function to be notified about incoming SUBSCRIBE_NAMESPACE messages.
Definition internal/moq.h:1383
void(* publish_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming PUBLISH_ACCEPTED messages.
Definition internal/moq.h:1360
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)
Callback function to be notified about incoming SUBSCRIBE messages.
Definition internal/moq.h:1364
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)
Callback function to be notified about incoming PUBLISH_NAMESPACE_ERROR messages.
Definition internal/moq.h:1353
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)
Callback function to be notified about incoming errors to a previously REQUEST_UPDATE message.
Definition internal/moq.h:1375
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)
Callback function to be notified about incoming FETCH messages.
Definition internal/moq.h:1396
void(* incoming_unsubscribe)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified about incoming UNBSUBSCRIBE messages.
Definition internal/moq.h:1379
void(* fetch_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_location *largest, imquic_moq_request_parameters *parameters, GList *track_extensions)
Callback function to be notified about incoming FETCH_ACCEPTED messages.
Definition internal/moq.h:1403
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:1381
void(* publish_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval)
Callback function to be notified about incoming PUBLISH_ERROR messages.
Definition internal/moq.h:1362
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)
Callback function to be notified about incoming SUBSCRIBE_NAMESPACE_ERROR messages.
Definition internal/moq.h:1388
void(* request_updated)(imquic_connection *conn, uint64_t request_id, uint64_t sub_request_id, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming REQUEST_UPDATE messages.
Definition internal/moq.h:1371
void(* request_update_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Callback function to be notified about an ACK to a previously sent REQUEST_UPDATE message.
Definition internal/moq.h:1373
void(* incoming_publish_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming PUBLISH_NAMESPACE messages.
Definition internal/moq.h:1347
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)
Definition internal/moq.h:1398
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:1355
void(* publish_done)(imquic_connection *conn, uint64_t request_id, imquic_moq_pub_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:1377
void(* incoming_track_status)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_name *tn, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming TRACK_STATUS messages.
Definition internal/moq.h:1407
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:1343
void(* incoming_publish_namespace_cancel)(imquic_connection *conn, imquic_moq_namespace *tns, imquic_moq_request_error_code error_code, const char *reason)
Callback function to be notified about incoming PUBLISH_NAMESPACE_CANCEL messages.
Definition internal/moq.h:1349
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)
Callback function to be notified about incoming PUBLISH messages.
Definition internal/moq.h:1357
void(* incoming_namespace_done)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Callback function to be notified about incoming NAMESPACE_DONE messages.
Definition internal/moq.h:1394
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:1401
void(* connection_gone)(imquic_connection *conn)
Callback function to be notified about MoQ connections being closed.
Definition internal/moq.h:1418
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:1345
void(* incoming_unsubscribe_namespace)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns)
Callback function to be notified about incoming UNSUBSCRIBE_NAMESPACE messages, or when the bidirecti...
Definition internal/moq.h:1390
void(* publish_namespace_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming PUBLISH_NAMESPACE_ACCEPTED messages.
Definition internal/moq.h:1351
void(* track_status_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming TRACK_STATUS_ACCEPTED messages.
Definition internal/moq.h:1410
MoQ context.
Definition internal/moq.h:376
volatile gint destroyed
Whether this instance has been destroyed (reference counting)
Definition internal/moq.h:422
imquic_moq_version version
Negotiated version.
Definition internal/moq.h:382
uint64_t next_request_id
Definition internal/moq.h:408
uint64_t local_max_request_id
Definition internal/moq.h:410
uint64_t control_stream_id
ID of the control stream.
Definition internal/moq.h:396
size_t authlen
Size of the auth data to use when connecting (clients only)
Definition internal/moq.h:388
imquic_refcount ref
Reference counter.
Definition internal/moq.h:424
char * peer_implementation
MoQ implementation of our peer, if provided.
Definition internal/moq.h:384
gboolean has_control_stream
Whether a MoQ control stream has been established.
Definition internal/moq.h:394
uint64_t max_auth_token_cache_size
Maximum Request IDs we can send and the one we accept.
Definition internal/moq.h:412
uint64_t max_request_id
Maximum Request IDs we can send and the one we accept.
Definition internal/moq.h:410
GHashTable * subscriptions
Subscriptions this connection will send objects to, indexed by track_alias.
Definition internal/moq.h:400
uint64_t expected_request_id
Current Request IDs we expect and we can send.
Definition internal/moq.h:408
GHashTable * streams
QUIC streams handled by the stack.
Definition internal/moq.h:398
GHashTable * requests
Map of Request IDs and what they were for.
Definition internal/moq.h:406
uint8_t * auth
Auth data to use when connecting (clients only)
Definition internal/moq.h:386
volatile gint got_goaway
Whether we have received a GOAWAY.
Definition internal/moq.h:420
gboolean auth_set
Whether the auth data has been set.
Definition internal/moq.h:390
gboolean is_server
Whether this is a QUIC server or client.
Definition internal/moq.h:392
imquic_mutex mutex
Mutex.
Definition internal/moq.h:416
uint64_t local_max_auth_token_cache_size
Definition internal/moq.h:412
imquic_connection * conn
Associated QUIC connection.
Definition internal/moq.h:378
GHashTable * subscriptions_by_id
Subscriptions this connection will send objects to, indexed by request_id.
Definition internal/moq.h:402
volatile gint connected
Whether we have established a connection.
Definition internal/moq.h:418
imquic_moq_buffer * buffer
Buffer to process incoming messages.
Definition internal/moq.h:414
GList * supported_versions
Peer versions.
Definition internal/moq.h:380
GHashTable * tns_subscriptions_by_id
Track namespace subscriptions (served or asked), indexed by request_id.
Definition internal/moq.h:404
MoQ location range (from where to where, e.g., for FETCH)
Definition imquic/moq.h:396
MoQ Group/Object couple (for ranges)
Definition imquic/moq.h:390
MoQ Track Name.
Definition imquic/moq.h:348
MoQ Track Namespace.
Definition imquic/moq.h:308
MoQ Object.
Definition imquic/moq.h:582
MoQ request parameters.
Definition imquic/moq.h:436
MoQ setup parameters.
Definition internal/moq.h:259
char path[256]
Value of the PATH parameter.
Definition internal/moq.h:263
uint8_t auth_token[256]
Value of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:275
gboolean max_request_id_set
Whether the MAX_REQUEST_ID parameter is set.
Definition internal/moq.h:265
gboolean moqt_implementation_set
Whether the MOQT_IMPLEMENTATION parameter is set.
Definition internal/moq.h:283
size_t auth_token_len
Size of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:277
gboolean max_auth_token_cache_size_set
Whether the MAX_AUTH_TOKEN_CACHE_SIZE parameter is set.
Definition internal/moq.h:269
char authority[256]
Value of the AUTHORITY parameter.
Definition internal/moq.h:281
uint64_t max_auth_token_cache_size
Value of the MAX_AUTH_TOKEN_CACHE_SIZE parameter.
Definition internal/moq.h:271
gboolean unknown
Whether there's unknown parameters.
Definition internal/moq.h:287
gboolean path_set
Whether the PATH parameter is set.
Definition internal/moq.h:261
gboolean auth_token_set
Whether the AUTHORIZATION_TOKEN parameter is set.
Definition internal/moq.h:273
uint64_t max_request_id
Value of the MAX_REQUEST_ID parameter.
Definition internal/moq.h:267
gboolean authority_set
Whether the AUTHORITY parameter is set.
Definition internal/moq.h:279
char moqt_implementation[256]
Value of the MOQT_IMPLEMENTATION parameter.
Definition internal/moq.h:285
MoQ stream.
Definition internal/moq.h:430
uint64_t subgroup_id
Subgroup ID.
Definition internal/moq.h:450
uint64_t last_object_id
Last Object ID handled.
Definition internal/moq.h:466
volatile gint subscribe_namespace_state
Definition internal/moq.h:436
uint64_t last_subgroup_id
Last Subgroup ID handled.
Definition internal/moq.h:464
uint8_t priority
Publisher priority.
Definition internal/moq.h:456
imquic_moq_object_status object_status
Object status.
Definition internal/moq.h:454
gboolean namespace_publisher
Definition internal/moq.h:434
uint8_t namespace_prefix_size
In case this is for SUBSCRIBE_NAMESPACE, how many tuples are in the namespace prefix.
Definition internal/moq.h:440
imquic_moq_data_message_type type
Delivery mode for this stream, in case it's used for objects.
Definition internal/moq.h:442
imquic_moq_buffer * buffer
Buffer to process incoming messages/objects.
Definition internal/moq.h:458
uint64_t stream_id
QUIC stream ID.
Definition internal/moq.h:432
gboolean closed
Whether we closed this stream.
Definition internal/moq.h:470
uint64_t track_alias
Track alias.
Definition internal/moq.h:446
gboolean got_objects
Whether we got at least an object on this stream.
Definition internal/moq.h:460
uint64_t last_group_id
Last Group ID handled.
Definition internal/moq.h:462
uint8_t last_priority
Last priority handled.
Definition internal/moq.h:468
gboolean subscribe_namespace
Definition internal/moq.h:434
imquic_moq_namespace * namespace_prefix
In case this is for SUBSCRIBE_NAMESPACE, the namespace prefix.
Definition internal/moq.h:438
uint64_t group_id
Group ID.
Definition internal/moq.h:448
uint64_t object_id
Object ID.
Definition internal/moq.h:452
imquic_moq_namespace * last_tuple
Definition internal/moq.h:438
uint64_t request_id
ID of the subscription.
Definition internal/moq.h:444
MoQ subscription, whether this is a publisher or a subscriber.
Definition internal/moq.h:477
size_t streams_count
Count of how many streams were used for this subscription.
Definition internal/moq.h:489
uint64_t request_id
ID of the subscription.
Definition internal/moq.h:479
uint64_t track_alias
Track alias.
Definition internal/moq.h:481
imquic_moq_stream * stream
Stream for this subscription, in case it's a single one.
Definition internal/moq.h:485
gboolean fetch
Whether this is a FETCH.
Definition internal/moq.h:483
GHashTable * streams_by_subgroup
Streams for this subscription, indexed by subgroup.
Definition internal/moq.h:487
QLOG instance.
Definition qlog.h:49
Generic utilities (headers)