18#ifndef IMQUIC_MOQ_INTERNAL_H
19#define IMQUIC_MOQ_INTERNAL_H
33#define IMQUIC_MOQ 7171953
100 gboolean payload, gboolean prop, gboolean eog, gboolean oid, gboolean priority);
112 gboolean *payload, gboolean *prop, gboolean *eog, gboolean *oid, gboolean *priority, gboolean *violation);
151 gboolean subgroup, gboolean sgid0, gboolean prop, gboolean eog, gboolean priority, gboolean first_object);
163 gboolean *subgroup, gboolean *sgid0, gboolean *prop, gboolean *eog, gboolean *priority, gboolean *first_object, gboolean *violation);
201 gboolean datagram, gboolean end_ne_range, gboolean end_uk_range);
216 gboolean *datagram, gboolean *end_ne_range, gboolean *end_uk_range, gboolean *violation);
845 uint8_t *bytes,
size_t blen, uint64_t request_id, uint64_t error,
const char *reason, uint64_t retry_interval,
imquic_moq_redirect *redirect);
856 uint8_t *bytes,
size_t blen, uint64_t request_id,
890 uint8_t *bytes,
size_t blen, uint64_t request_id,
915 uint8_t *bytes,
size_t blen, uint64_t request_id,
939 uint8_t *bytes,
size_t blen, uint64_t request_id,
960 uint8_t *bytes,
size_t blen, uint64_t request_id,
973 uint8_t *bytes,
size_t blen, uint64_t request_id,
985 uint8_t *bytes,
size_t blen, uint64_t request_id,
1031 uint64_t request_id, uint64_t joining_request_id, uint64_t preceding_group_offset,
1054 uint8_t *bytes,
size_t blen, uint64_t request_id,
1067 uint8_t *bytes,
size_t blen, uint64_t request_id,
1079 uint8_t *bytes,
size_t blen, uint64_t request_id,
const char *new_session_uri, uint64_t timeout);
1097 uint64_t group_id, uint64_t object_id, uint64_t object_status, uint8_t priority,
1098 uint8_t *payload,
size_t plen, uint8_t *properties,
size_t prlen);
1113 uint64_t track_alias, uint64_t group_id, uint64_t object_id, uint8_t priority,
1114 uint64_t object_status, uint8_t *properties,
size_t prlen);
1130 uint64_t request_id, uint64_t track_alias, uint64_t group_id, uint64_t subgroup_id, uint8_t priority);
1145 uint8_t *bytes,
size_t blen, uint64_t object_id, uint64_t object_status,
1146 uint8_t *payload,
size_t plen, uint8_t *properties,
size_t prlen);
1174 uint64_t flags, uint64_t group_id, uint64_t subgroup_id, uint64_t object_id, uint8_t priority,
1175 uint64_t object_status, uint8_t *payload,
size_t plen, uint8_t *properties,
size_t prlen);
1194 uint8_t *properties,
size_t prlen, gboolean prefix);
1209 uint64_t opt, uint64_t prev, uint64_t number);
1220 uint64_t opt, uint64_t prev, uint8_t *buf,
size_t buflen);
1241 uint8_t *bytes,
size_t blen, uint8_t *params_num);
1256 uint64_t param, uint64_t prev, uint64_t number);
1266 uint64_t param, uint64_t prev, uint8_t number);
1287 uint64_t param, uint64_t prev, uint8_t *buf,
size_t buflen);
1309 uint8_t *bytes,
size_t blen, uint8_t *params_num);
1436 uint8_t *bytes, uint64_t length, gboolean complete);
Buffer abstraction (headers)
imquic MoQ public interface (headers)
imquic_moq_object_status
MoQ Object status.
Definition imquic/moq.h:572
imquic_moq_request_error_code
Request error codes.
Definition imquic/moq.h:761
imquic_moq_version
Versions that can be negotiated.
Definition imquic/moq.h:304
imquic_moq_subscribe_namespace_options
Subscribe options for namespaces.
Definition imquic/moq.h:469
imquic_moq_pub_done_code
Publish done codes.
Definition imquic/moq.h:790
imquic_moq_delivery
Ways of sending objects.
Definition imquic/moq.h:558
imquic public interface (headers)
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 prop, 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:896
size_t imquic_moq_add_request_update(imquic_moq_context *moq, imquic_moq_stream *moq_stream, 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:4922
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:8763
size_t imquic_moq_setup_options_serialize(imquic_moq_context *moq, imquic_moq_setup_options *options, uint8_t *bytes, size_t blen, uint8_t *params_num)
Helper to serialize a imquic_moq_setup_options set to a buffer.
Definition moq.c:1088
json_t * imquic_qlog_moq_message_prepare(const char *type)
Helper to create a new QLOG MoQT message.
Definition moq.c:8444
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:2637
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:8666
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:1537
imquic_moq_request_parameter_type
MoQ request parameter types.
Definition internal/moq.h:233
@ IMQUIC_MOQ_REQUEST_PARAM_EXPIRES
Definition internal/moq.h:239
@ IMQUIC_MOQ_REQUEST_PARAM_FILL_TIMEOUT
Definition internal/moq.h:241
@ IMQUIC_MOQ_REQUEST_PARAM_GROUP_ORDER
Definition internal/moq.h:245
@ IMQUIC_MOQ_REQUEST_PARAM_OBJECT_DELIVERY_TIMEOUT
Definition internal/moq.h:234
@ IMQUIC_MOQ_REQUEST_PARAM_TRACK_NAMESPACE_PREFIX
Definition internal/moq.h:247
@ IMQUIC_MOQ_REQUEST_PARAM_SUBGROUP_DELIVERY_TIMEOUT
Definition internal/moq.h:238
@ IMQUIC_MOQ_REQUEST_PARAM_RENDEZVOUS_TIMEOUT
Definition internal/moq.h:237
@ IMQUIC_MOQ_REQUEST_PARAM_LARGEST_OBJECT
Definition internal/moq.h:240
@ IMQUIC_MOQ_REQUEST_PARAM_NEW_GROUP_REQUEST
Definition internal/moq.h:246
@ IMQUIC_MOQ_REQUEST_PARAM_SUBSCRIBER_PRIORITY
Definition internal/moq.h:243
@ IMQUIC_MOQ_REQUEST_PARAM_SUBSCRIPTION_FILTER
Definition internal/moq.h:244
@ IMQUIC_MOQ_REQUEST_PARAM_FORWARD
Definition internal/moq.h:242
@ IMQUIC_MOQ_REQUEST_PARAM_AUTHORIZATION_TOKEN
Definition internal/moq.h:236
@ IMQUIC_MOQ_REQUEST_PARAM_DELIVERY_TIMEOUT
Definition internal/moq.h:235
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:8798
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:4590
size_t imquic_moq_parse_subscribe_tracks(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_TRACKS message.
Definition moq.c:3312
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:5141
size_t imquic_moq_add_publish_done(imquic_moq_context *moq, imquic_moq_stream *moq_stream, 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:5014
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:3935
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:3219
imquic_media_stream_request_state
MoQ stream request state.
Definition internal/moq.h:377
@ IMQUIC_MOQ_REQUEST_STATE_NEW
Definition internal/moq.h:378
@ IMQUIC_MOQ_REQUEST_STATE_SENT
Definition internal/moq.h:379
@ IMQUIC_MOQ_REQUEST_STATE_OK
Definition internal/moq.h:380
@ IMQUIC_MOQ_REQUEST_STATE_DONE
Definition internal/moq.h:383
@ IMQUIC_MOQ_REQUEST_STATE_UPDATE_SENT
Definition internal/moq.h:382
@ IMQUIC_MOQ_REQUEST_STATE_ERROR
Definition internal/moq.h:381
size_t imquic_moq_add_properties(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *properties, size_t prlen, gboolean prefix)
Helper method to add properties to a buffer.
Definition moq.c:5578
void imquic_moq_connection_gone(imquic_connection *conn, uint64_t error_code, const char *reason)
Callback the core invokes when an existing MoQ connection is not available anymore.
Definition moq.c:480
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:4610
uint8_t imquic_moq_data_message_type_from_subgroup_header(imquic_moq_version version, gboolean subgroup, gboolean sgid0, gboolean prop, gboolean eog, gboolean priority, gboolean first_object)
Helper function to return the type to use for SUBRGOUP_HEADER out of the individual properties.
Definition moq.c:824
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:8835
size_t imquic_moq_parse_publish_namespace(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_NAMESPACE 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:1368
void imquic_moq_subscription_destroy(imquic_moq_subscription *moq_sub)
Destroy an existing MoQ subscription.
Definition moq.c:1378
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:890
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 *properties, size_t prlen)
Helper to add an object to a buffer, formatted as expected for SUBGROUP_HEADER objects (so not all ID...
Definition moq.c:5486
size_t imquic_moq_parameter_add_uint8(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t param, uint64_t prev, uint8_t number)
Helper to add a MoQ parameter with a numeric value to a buffer as a byte.
Definition moq.c:5765
void imquic_qlog_moq_message_add_properties(json_t *message, GList *properties, const char *name)
Helper to add a stringified array of propertie headers to a message.
Definition moq.c:8645
size_t imquic_moq_add_subscribe(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_track *track_name, imquic_moq_request_parameters *parameters)
Helper to add a SUBSCRIBE message to a buffer.
Definition moq.c:4884
size_t imquic_moq_add_goaway(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint64_t request_id, const char *new_session_uri, uint64_t timeout)
Helper method to add a GOAWAY message to a buffer.
Definition moq.c:5355
void imquic_moq_stream_destroy(imquic_moq_stream *moq_stream)
Destroy an existing MoQ stream.
Definition moq.c:1400
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, imquic_moq_redirect *redirect)
Helper method to add a REQUEST_ERROR message to a buffer.
Definition moq.c:4667
size_t imquic_moq_parse_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SETUP message.
Definition moq.c:2185
uint8_t imquic_moq_datagram_message_type_return(imquic_moq_version version, gboolean payload, gboolean prop, 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:763
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:8868
size_t imquic_moq_setup_option_add_data(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t opt, uint64_t prev, uint8_t *buf, size_t buflen)
Helper to add a MoQ setup option with generic data to a buffer.
Definition moq.c:5623
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:2270
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:4188
size_t imquic_moq_parse_padding_datagram(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PADDING_DATAGRAM message.
Definition moq.c:4389
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:4021
imquic_moq_datagram_message_type
MoQ datagram messages.
Definition internal/moq.h:78
@ IMQUIC_MOQ_OBJECT_DATAGRAM
Definition internal/moq.h:79
@ IMQUIC_MOQ_OBJECT_DATAGRAM_RANGE_MAX
Definition internal/moq.h:82
@ IMQUIC_MOQ_PADDING_DATAGRAM
Definition internal/moq.h:83
@ IMQUIC_MOQ_OBJECT_DATAGRAM_RANGE_MIN
Definition internal/moq.h:81
@ IMQUIC_MOQ_OBJECT_DATAGRAM_STATUS
Definition internal/moq.h:80
size_t imquic_moq_add_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_setup_options *options)
Helper method to add a SETUP message to a buffer.
Definition moq.c:4568
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:759
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:678
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:8683
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:5052
size_t imquic_moq_add_track_status(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_track *track_name, imquic_moq_request_parameters *parameters)
Helper to add a TRACK_STATUS message to a buffer.
Definition moq.c:5321
void imquic_moq_stop_sending_incoming(imquic_connection *conn, uint64_t stream_id, uint64_t error_code)
Callback the core invokes when there's an incoming STOP_SENDING.
Definition moq.c:453
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 *properties, size_t prlen)
Helper to add an object to a buffer, formatted as expected for FETCH_HEADER objects (so not all IDs)
Definition moq.c:5525
imquic_moq_message_type
MoQ messages.
Definition internal/moq.h:41
@ IMQUIC_MOQ_CLIENT_SETUP
Definition internal/moq.h:66
@ IMQUIC_MOQ_FETCH
Definition internal/moq.h:62
@ IMQUIC_MOQ_REQUEST_ERROR
Definition internal/moq.h:43
@ IMQUIC_MOQ_SETUP
Definition internal/moq.h:65
@ IMQUIC_MOQ_MAX_REQUEST_ID
Definition internal/moq.h:60
@ IMQUIC_MOQ_FETCH_CANCEL
Definition internal/moq.h:63
@ IMQUIC_MOQ_REQUEST_UPDATE
Definition internal/moq.h:44
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE
Definition internal/moq.h:54
@ IMQUIC_MOQ_SUBSCRIBE
Definition internal/moq.h:45
@ IMQUIC_MOQ_SUBSCRIBE_TRACKS
Definition internal/moq.h:56
@ IMQUIC_MOQ_FETCH_OK
Definition internal/moq.h:64
@ IMQUIC_MOQ_UNSUBSCRIBE
Definition internal/moq.h:49
@ IMQUIC_MOQ_REQUEST_OK
Definition internal/moq.h:42
@ IMQUIC_MOQ_PUBLISH_NAMESPACE
Definition internal/moq.h:47
@ IMQUIC_MOQ_GOAWAY
Definition internal/moq.h:53
@ IMQUIC_MOQ_PUBLISH_DONE
Definition internal/moq.h:50
@ IMQUIC_MOQ_NAMESPACE_DONE
Definition internal/moq.h:58
@ IMQUIC_MOQ_PUBLISH_BLOCKED
Definition internal/moq.h:59
@ IMQUIC_MOQ_PUBLISH_OK
Definition internal/moq.h:69
@ IMQUIC_MOQ_SERVER_SETUP
Definition internal/moq.h:67
@ IMQUIC_MOQ_SUBSCRIBE_NAMESPACE_v17
Definition internal/moq.h:55
@ 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:46
@ IMQUIC_MOQ_NAMESPACE
Definition internal/moq.h:57
@ 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:800
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:8781
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:5118
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:3422
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:877
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:3852
size_t imquic_moq_build_properties(imquic_moq_version version, GList *properties, uint8_t *bytes, size_t blen)
Helper mode to craft a properties buffer out of a GList of imquic_moq_property.
Definition moq.c:6204
size_t imquic_moq_add_fetch_ok(imquic_moq_context *moq, imquic_moq_stream *moq_stream, 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_properties)
Helper method to add a FETCH_OK message to a buffer.
Definition moq.c:5279
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:5259
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:5834
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:982
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:2408
size_t imquic_moq_add_publish_namespace_cancel(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_CANCEL message to a buffer.
Definition moq.c:4779
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:8900
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:5464
size_t imquic_moq_add_padding(imquic_moq_context *moq, uint8_t *bytes, size_t blen, size_t padding, gboolean datagram)
Helper to add padding data to a buffer, formatted as expected for PADDING_STREAM or PADDING_DATAGRAM.
Definition moq.c:5563
int imquic_moq_parse_padding_stream(imquic_moq_context *moq, imquic_moq_stream *moq_stream, gboolean complete, uint8_t *error)
Helper to parse a PADDING_STREAM message.
Definition moq.c:4415
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:8700
void imquic_moq_deinit(void)
Uninitialize the native MoQ stack.
Definition moq.c:70
size_t imquic_moq_add_publish_blocked(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, imquic_moq_namespace *track_namespace_suffix, imquic_moq_track *track)
Helper method to add a PUBLISH_BLOCKED message to a buffer.
Definition moq.c:5164
size_t imquic_moq_add_publish_namespace_done(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t request_id)
Helper method to add a PUBLISH_NAMESPACE_DONE message to a buffer.
Definition moq.c:4759
gboolean imquic_moq_is_data_message_type_valid(imquic_moq_version version, imquic_moq_data_message_type type)
Helper function to check if a type used for SUBRGOUP_HEADER is valid.
Definition moq.c:810
size_t imquic_moq_parse_fetch(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a FETCH message.
Definition moq.c:3495
void imquic_moq_init(void)
Initialize the native MoQ stack at startup.
Definition moq.c:65
const char * imquic_moq_setup_option_type_str(imquic_moq_setup_option_type type)
Helper function to serialize to string the name of a imquic_moq_setup_option_type value.
Definition moq.c:963
imquic_moq_fetch_subgroup_type
MoQ FETCH subgroup flags.
Definition internal/moq.h:177
@ IMQUIC_MOQ_FETCH_SUBGROUP_ZERO
Definition internal/moq.h:178
@ IMQUIC_MOQ_FETCH_SUBGROUP_PREVIOUS
Definition internal/moq.h:179
@ IMQUIC_MOQ_FETCH_SUBGROUP_ID
Definition internal/moq.h:181
@ IMQUIC_MOQ_FETCH_SUBGROUP_PLUS_ONE
Definition internal/moq.h:180
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 *properties, size_t prlen)
Helper to add an OBJECT_DATAGRAM message to a buffer.
Definition moq.c:5396
void imquic_moq_datagram_message_type_parse(imquic_moq_version version, uint8_t type, gboolean *payload, gboolean *prop, 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:779
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:1056
size_t imquic_moq_parse_setup_option(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_setup_options *params, uint64_t *param_type, uint8_t *error)
Helper method to parse a MoQ setup parameter.
Definition moq.c:5650
size_t imquic_moq_setup_option_add_int(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t opt, uint64_t prev, uint64_t number)
Helper to add a MoQ setup option with a numeric value to a buffer.
Definition moq.c:5600
size_t imquic_moq_add_publish_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_request_parameters *parameters)
Helper method to add a PUBLISH_NAMESPACE message to a buffer.
Definition moq.c:4725
imquic_moq_data_message_type
MoQ STREAM data messages.
Definition internal/moq.h:120
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE2_MIN
Definition internal/moq.h:125
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE4_MAX
Definition internal/moq.h:130
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE3_MIN
Definition internal/moq.h:127
@ IMQUIC_MOQ_FETCH_HEADER
Definition internal/moq.h:132
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE1_MIN
Definition internal/moq.h:123
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE1_MAX
Definition internal/moq.h:124
@ IMQUIC_MOQ_PADDING_STREAM
Definition internal/moq.h:134
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE2_MAX
Definition internal/moq.h:126
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE3_MAX
Definition internal/moq.h:128
@ IMQUIC_MOQ_SUBGROUP_HEADER
Definition internal/moq.h:122
@ IMQUIC_MOQ_SUBGROUP_HEADER_RANGE4_MIN
Definition internal/moq.h:129
size_t imquic_moq_add_server_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_setup_options *options)
Helper method to add a SERVER_SETUP message to a buffer.
Definition moq.c:4545
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:4228
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:8815
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:3112
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:2662
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:188
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:8881
imquic_moq_stream * imquic_moq_stream_create(void)
Create a new MoQ stream.
Definition moq.c:1394
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:2298
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:316
size_t imquic_moq_parse_subscribe_ok(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE_OK message.
Definition moq.c:3037
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:2118
void imquic_moq_qlog_object_datagram_created(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_created event.
Definition moq.c:8711
size_t imquic_moq_parse_publish(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH message.
Definition moq.c:2711
imquic_moq_fetch_type
MoQ FETCH types.
Definition internal/moq.h:305
@ IMQUIC_MOQ_FETCH_STANDALONE
Definition internal/moq.h:306
@ IMQUIC_MOQ_FETCH_JOINING_ABSOLUTE
Definition internal/moq.h:308
@ IMQUIC_MOQ_FETCH_JOINING_RELATIVE
Definition internal/moq.h:307
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, GList *track_properties)
Helper method to add a REQUEST_OK message to a buffer.
Definition moq.c:4630
void imquic_qlog_moq_message_add_track(json_t *message, imquic_moq_track *track_name)
Helper to add a stringified track name to a message.
Definition moq.c:8469
GList * imquic_moq_parse_properties(imquic_moq_version version, uint8_t *properties, size_t plen)
Helper mode to parse a properties buffer to a GList of imquic_moq_property.
Definition moq.c:6138
size_t imquic_moq_request_parameters_serialize(imquic_moq_context *moq, imquic_moq_message_type request, 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:1179
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 *prop, 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:921
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:3387
size_t imquic_moq_add_publish(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_track *track_name, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties)
Helper to add a PUBLISH message to a buffer.
Definition moq.c:4810
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:5514
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:2023
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 *properties, size_t prlen)
Helper to add an OBJECT_DATAGRAM_STATUS message to a buffer.
Definition moq.c:5432
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:3650
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:2242
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:8528
void imquic_qlog_moq_message_add_setup_options(json_t *message, imquic_moq_setup_options *options, const char *name)
Helper to add a stringified array of setup parameters to a message.
Definition moq.c:8479
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:426
size_t imquic_moq_add_subscribe_ok(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties)
Helper method to add a SUBSCRIBE_OK message to a buffer.
Definition moq.c:4957
size_t imquic_moq_parse_publish_ok(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_OK message.
Definition moq.c:2812
size_t imquic_moq_parse_goaway(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a GOAWAY message.
Definition moq.c:4446
size_t imquic_moq_add_subscribe_tracks(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_request_parameters *parameters)
Helper to add a SUBSCRIBE_TRACKS message to a buffer.
Definition moq.c:5089
size_t imquic_moq_parse_publish_blocked(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_BLOCKED message.
Definition moq.c:3457
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:867
size_t imquic_moq_add_publish_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 PUBLISH_OK message to a buffer.
Definition moq.c:4855
size_t imquic_moq_parse_publish_done(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a PUBLISH_DONE message.
Definition moq.c:3147
size_t imquic_moq_parse_track_status(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a TRACK_STATUS message.
Definition moq.c:3778
size_t imquic_moq_parameter_add_location(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t param, uint64_t prev, imquic_moq_location *location)
Helper to add a MoQ parameter with a location to a buffer.
Definition moq.c:5785
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:4084
size_t imquic_moq_parse_fetch_ok(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a FETCH_OK message.
Definition moq.c:3688
const char * imquic_media_stream_request_state_str(imquic_media_stream_request_state state)
Helper function to serialize to string the name of a imquic_media_stream_request_state value.
Definition moq.c:740
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:376
size_t imquic_moq_add_fetch(imquic_moq_context *moq, imquic_moq_stream *moq_stream, 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_track *track_name, imquic_moq_location_range *range, imquic_moq_request_parameters *parameters)
Helper to add a FETCH message to a buffer.
Definition moq.c:5189
size_t imquic_moq_parameter_add_varint(imquic_moq_context *moq, uint8_t *bytes, size_t blen, uint64_t param, uint64_t prev, uint64_t number)
Helper to add a MoQ parameter with a numeric value to a buffer as a varint.
Definition moq.c:5741
imquic_moq_setup_option_type
MoQ setup option type.
Definition internal/moq.h:219
@ IMQUIC_MOQ_SETUP_OPTION_MOQT_IMPLEMENTATION
Definition internal/moq.h:225
@ IMQUIC_MOQ_SETUP_OPTION_PATH
Definition internal/moq.h:220
@ IMQUIC_MOQ_SETUP_OPTION_AUTHORITY
Definition internal/moq.h:224
@ IMQUIC_MOQ_SETUP_OPTION_MAX_AUTH_TOKEN_CACHE_SIZE
Definition internal/moq.h:223
@ IMQUIC_MOQ_SETUP_OPTION_MAX_REQUEST_ID
Definition internal/moq.h:221
@ IMQUIC_MOQ_SETUP_OPTION_AUTHORIZATION_TOKEN
Definition internal/moq.h:222
size_t imquic_moq_parse_request_update(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a REQUEST_UPDATE message.
Definition moq.c:2956
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:8855
void imquic_moq_data_message_type_to_subgroup_header(imquic_moq_version version, uint8_t type, gboolean *subgroup, gboolean *sgid0, gboolean *prop, gboolean *eog, gboolean *priority, gboolean *first_object, gboolean *violation)
Helper function to parse a type value for SUBRGOUP_HEADER to the individual properties.
Definition moq.c:844
void imquic_moq_qlog_object_datagram_parsed(imquic_qlog *qlog, imquic_moq_object *object)
Add a object_datagram_parsed event.
Definition moq.c:8728
size_t imquic_moq_add_client_setup(imquic_moq_context *moq, uint8_t *bytes, size_t blen, imquic_moq_setup_options *options)
Helper method to add a CLIENT_SETUP message to a buffer.
Definition moq.c:4522
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:8452
size_t imquic_moq_parse_subscribe(imquic_moq_context *moq, imquic_moq_stream *moq_stream, uint8_t *bytes, size_t blen, uint8_t *error)
Helper to parse a SUBSCRIBE message.
Definition moq.c:2867
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 parameter with generic data to a buffer.
Definition moq.c:5807
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:8745
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:4994
GMutex imquic_mutex
imquic mutex implementation
Definition mutex.h:18
Reference counter mechanism.
Internal buffer.
Definition buffer.h:18
QUIC Connection.
Definition connection.h:38
MoQ public callbacks.
Definition internal/moq.h:1313
void(* subscribe_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified about incoming SUBSCRIBE_ERROR messages.
Definition internal/moq.h:1349
void(* incoming_object)(imquic_connection *conn, imquic_moq_object *object)
Callback function to be notified about incoming MoQ objects.
Definition internal/moq.h:1412
void(* connection_gone)(imquic_connection *conn, uint64_t error_code, const char *reason)
Callback function to be notified about MoQ connections being closed.
Definition internal/moq.h:1418
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:1386
void(* publish_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified about incoming PUBLISH_NAMESPACE_ERROR messages.
Definition internal/moq.h:1330
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:1315
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:1369
void(* incoming_publish_blocked)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn)
Callback function to be notified about incoming PUBLISH_BLOCKED messages.
Definition internal/moq.h:1390
void(* incoming_goaway)(imquic_connection *conn, const char *uri, uint64_t timeout)
Callback function to be notified about incoming GOAWAY messages.
Definition internal/moq.h:1414
void(* track_status_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified about incoming TRACK_STATUS_ERROR messages.
Definition internal/moq.h:1409
void(* track_status_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters, GList *track_properties)
Callback function to be notified about incoming TRACK_STATUS_ACCEPTED messages.
Definition internal/moq.h:1407
void(* incoming_publish)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties)
Callback function to be notified about incoming PUBLISH messages.
Definition internal/moq.h:1336
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:1366
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:1339
void(* incoming_publish_namespace_cancel)(imquic_connection *conn, uint64_t request_id, 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:1326
void(* incoming_track_status)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming TRACK_STATUS messages.
Definition internal/moq.h:1404
void(* incoming_unsubscribe_namespace)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified about incoming UNSUBSCRIBE_NAMESPACE messages, or when the bidirecti...
Definition internal/moq.h:1374
void(* subscribe_accepted)(imquic_connection *conn, uint64_t request_id, uint64_t track_alias, imquic_moq_request_parameters *parameters, GList *track_properties)
Callback function to be notified about incoming SUBSCRIBE_ACCEPTED messages.
Definition internal/moq.h:1347
void(* incoming_unsubscribe)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified about incoming UNBSUBSCRIBE messages, or when the bidirectional stre...
Definition internal/moq.h:1361
void(* incoming_subscribe_tracks)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming SUBSCRIBE_TRACKS messages.
Definition internal/moq.h:1376
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:1364
void(* request_update_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified about incoming errors to a previously REQUEST_UPDATE message.
Definition internal/moq.h:1356
void(* fetch_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified about incoming FETCH_ERROR messages.
Definition internal/moq.h:1401
void(* fetch_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_location *largest, imquic_moq_request_parameters *parameters, GList *track_properties)
Callback function to be notified about incoming FETCH_ACCEPTED messages.
Definition internal/moq.h:1399
void(* incoming_standalone_fetch)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_location_range *range, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming FETCH messages.
Definition internal/moq.h:1392
void(* subscribe_tracks_accepted)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_parameters *parameters)
Callback function to be notified when a SUBSCRIBE_TRACKS has been accepted.
Definition internal/moq.h:1379
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:1352
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:1354
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:1324
void(* incoming_subscribe)(imquic_connection *conn, uint64_t request_id, imquic_moq_namespace *tns, imquic_moq_track *tn, imquic_moq_request_parameters *parameters)
Callback function to be notified about incoming SUBSCRIBE messages.
Definition internal/moq.h:1344
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:1394
void(* incoming_request_goaway)(imquic_connection *conn, uint64_t request_id, const char *uri, uint64_t timeout)
Callback function to be notified about incoming requests GOAWAY messages.
Definition internal/moq.h:1416
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:1359
void(* publish_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified about incoming PUBLISH_ERROR messages.
Definition internal/moq.h:1341
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:1320
void(* subscribe_tracks_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified when a SUBSCRIBE_TRACKS returned an error.
Definition internal/moq.h:1381
void(* incoming_unsubscribe_tracks)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified the SUBSCRIBE_TRACKS bidirectional stream is closed.
Definition internal/moq.h:1384
void(* publish_namespace_done)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified about incoming PUBLISH_NAMESPACE_DONE messages.
Definition internal/moq.h:1334
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:1388
void(* incoming_fetch_cancel)(imquic_connection *conn, uint64_t request_id)
Callback function to be notified about incoming FETCH_CANCEL messages, or when the bidirectional stre...
Definition internal/moq.h:1397
void(* subscribe_namespace_error)(imquic_connection *conn, uint64_t request_id, imquic_moq_request_error_code error_code, const char *reason, uint64_t retry_interval, imquic_moq_redirect *redirect)
Callback function to be notified about incoming SUBSCRIBE_NAMESPACE_ERROR messages.
Definition internal/moq.h:1371
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:1322
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:1328
MoQ context.
Definition internal/moq.h:316
volatile gint destroyed
Whether this instance has been destroyed (reference counting)
Definition internal/moq.h:370
uint64_t remote_control_stream_id
Definition internal/moq.h:338
imquic_moq_version version
Negotiated version.
Definition internal/moq.h:322
uint64_t next_request_id
Definition internal/moq.h:354
gboolean sent_setup
Whether we sent and received a SETUP.
Definition internal/moq.h:340
uint64_t local_max_request_id
Definition internal/moq.h:356
uint64_t control_stream_id
ID(s) of the control stream (legacy bidirectional, or new unidirectional)
Definition internal/moq.h:338
size_t authlen
Size of the auth data to use when connecting (clients only)
Definition internal/moq.h:330
imquic_refcount ref
Reference counter.
Definition internal/moq.h:372
char * peer_implementation
MoQ implementation of our peer, if provided.
Definition internal/moq.h:326
gboolean has_control_stream
Whether a MoQ control stream has been established.
Definition internal/moq.h:336
uint64_t max_auth_token_cache_size
Maximum Request IDs we can send and the one we accept.
Definition internal/moq.h:358
uint64_t max_request_id
Maximum Request IDs we can send and the one we accept.
Definition internal/moq.h:356
volatile gint check_pending
Check if it's time to handle pending streams.
Definition internal/moq.h:366
GHashTable * subscriptions
Subscriptions this connection will send objects to, indexed by track_alias.
Definition internal/moq.h:346
gboolean do_grease
Whether we should add GREASE to our SETUP options.
Definition internal/moq.h:324
gboolean recvd_setup
Definition internal/moq.h:340
uint64_t expected_request_id
Current Request IDs we expect and we can send.
Definition internal/moq.h:354
GHashTable * streams
QUIC streams handled by the stack.
Definition internal/moq.h:342
GHashTable * requests
Map of Request IDs and what they were for.
Definition internal/moq.h:350
uint8_t * auth
Auth data to use when connecting (clients only)
Definition internal/moq.h:328
GHashTable * streams_by_reqid
Map of request streams, indexed by Request ID.
Definition internal/moq.h:344
volatile gint got_goaway
Whether we have received a GOAWAY.
Definition internal/moq.h:368
gboolean auth_set
Whether the auth data has been set.
Definition internal/moq.h:332
imquic_buffer * buffer
Buffer to process incoming messages.
Definition internal/moq.h:360
gboolean is_server
Whether this is a QUIC server or client.
Definition internal/moq.h:334
imquic_mutex mutex
Mutex.
Definition internal/moq.h:362
uint64_t local_max_auth_token_cache_size
Definition internal/moq.h:358
GHashTable * update_requests
Map of Request IDs to Existing Request IDs, for updates.
Definition internal/moq.h:352
imquic_connection * conn
Associated QUIC connection.
Definition internal/moq.h:318
GHashTable * subscriptions_by_id
Subscriptions this connection will send objects to, indexed by request_id.
Definition internal/moq.h:348
volatile gint connected
Whether we have established a connection.
Definition internal/moq.h:364
GList * supported_versions
Peer versions.
Definition internal/moq.h:320
MoQ location range (from where to where, e.g., for FETCH)
Definition imquic/moq.h:450
MoQ Group/Object couple (for ranges)
Definition imquic/moq.h:444
MoQ Track Namespace.
Definition imquic/moq.h:329
MoQ Object.
Definition imquic/moq.h:638
MoQ Redirect Structure.
Definition imquic/moq.h:411
MoQ request parameters.
Definition imquic/moq.h:487
MoQ setup parameters.
Definition internal/moq.h:256
uint8_t auth_token[256]
Value of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:274
gboolean moqt_implementation_set
Whether the MOQT_IMPLEMENTATION parameter is set.
Definition internal/moq.h:282
uint64_t max_auth_token_cache_size
Value of the MAX_AUTH_TOKEN_CACHE_SIZE parameter.
Definition internal/moq.h:270
gboolean unknown
Whether there's unknown parameters.
Definition internal/moq.h:286
char authority[256]
Value of the AUTHORITY parameter.
Definition internal/moq.h:280
gboolean authority_set
Whether the AUTHORITY parameter is set.
Definition internal/moq.h:278
char path[256]
Value of the PATH parameter.
Definition internal/moq.h:260
size_t auth_token_len
Size of the AUTHORIZATION_TOKEN parameter.
Definition internal/moq.h:276
gboolean max_request_id_set
Whether the MAX_REQUEST_ID parameter is set.
Definition internal/moq.h:263
gboolean auth_token_set
Whether the AUTHORIZATION_TOKEN parameter is set.
Definition internal/moq.h:272
gboolean path_set
Whether the PATH parameter is set.
Definition internal/moq.h:258
uint64_t max_request_id
Value of the MAX_REQUEST_ID parameter.
Definition internal/moq.h:266
char moqt_implementation[256]
Value of the MOQT_IMPLEMENTATION parameter.
Definition internal/moq.h:284
gboolean max_auth_token_cache_size_set
Whether the MAX_AUTH_TOKEN_CACHE_SIZE parameter is set.
Definition internal/moq.h:268
MoQ stream.
Definition internal/moq.h:393
imquic_buffer * buffer
Buffer to process incoming messages/objects.
Definition internal/moq.h:427
uint64_t subgroup_id
Subgroup ID.
Definition internal/moq.h:415
uint64_t last_object_id
Last Object ID handled.
Definition internal/moq.h:435
uint64_t last_subgroup_id
Last Subgroup ID handled.
Definition internal/moq.h:433
uint8_t priority
Publisher priority.
Definition internal/moq.h:423
gboolean first_of_subgroup
Whether the first object in the stream contains the first object in the subgroup (added in v18)
Definition internal/moq.h:425
imquic_moq_object_status object_status
Object status.
Definition internal/moq.h:419
imquic_moq_message_type request_type
Definition internal/moq.h:397
gboolean request_sender
Definition internal/moq.h:399
imquic_refcount ref
Reference counter.
Definition internal/moq.h:443
uint8_t namespace_prefix_size
In case this is for SUBSCRIBE_NAMESPACE, how many tuples are in the namespace prefix.
Definition internal/moq.h:405
imquic_moq_data_message_type type
Delivery mode for this stream, in case it's used for objects.
Definition internal/moq.h:407
imquic_media_stream_request_state request_state
Definition internal/moq.h:401
uint64_t stream_id
QUIC stream ID.
Definition internal/moq.h:395
volatile gint destroyed
Whether this instance has been destroyed (reference counting)
Definition internal/moq.h:441
gboolean closed
Whether we closed this stream.
Definition internal/moq.h:439
uint64_t track_alias
Track alias.
Definition internal/moq.h:411
gboolean got_objects
Whether we got at least an object on this stream.
Definition internal/moq.h:429
uint64_t last_group_id
Last Group ID handled.
Definition internal/moq.h:431
uint8_t last_priority
Last priority handled.
Definition internal/moq.h:437
uint64_t update_request_id
Definition internal/moq.h:409
imquic_moq_namespace * namespace_prefix
In case this is for SUBSCRIBE_NAMESPACE, the namespace prefix.
Definition internal/moq.h:403
uint64_t group_id
Group ID.
Definition internal/moq.h:413
uint64_t object_id
Object ID.
Definition internal/moq.h:417
gboolean ascending
If this is a FETCH stream, whether it's in ascending or descending order.
Definition internal/moq.h:421
imquic_moq_namespace * last_tuple
Definition internal/moq.h:403
uint64_t request_id
ID of the request/subscription, and of the update if one was involved.
Definition internal/moq.h:409
MoQ subscription, whether this is a publisher or a subscriber.
Definition internal/moq.h:453
size_t streams_count
Count of how many streams were used for this subscription.
Definition internal/moq.h:467
gboolean ascending
If this is a FETCH stream, whether it's in ascending or descending order.
Definition internal/moq.h:461
uint64_t request_id
ID of the subscription.
Definition internal/moq.h:455
uint64_t track_alias
Track alias.
Definition internal/moq.h:457
imquic_moq_stream * stream
Stream for this subscription, in case it's a single one.
Definition internal/moq.h:463
gboolean fetch
Whether this is a FETCH.
Definition internal/moq.h:459
GHashTable * streams_by_subgroup
Streams for this subscription, indexed by subgroup.
Definition internal/moq.h:465
MoQ Track Name.
Definition imquic/moq.h:377
QLOG instance.
Definition qlog.h:36
Generic utilities (headers)