Loading...
Searching...
No Matches
internal/roq.h
Go to the documentation of this file.
1
17
18#ifndef IMQUIC_ROQ_INTERNAL_H
19#define IMQUIC_ROQ_INTERNAL_H
20
21#include <glib.h>
22
23#include "../imquic/roq.h"
24#include "qlog.h"
25
26#define IMQUIC_ROQ 7499633
27
29void imquic_roq_init(void);
31void imquic_roq_deinit(void);
32
44
46typedef struct imquic_roq_stream {
48 uint64_t stream_id;
50 uint64_t flow_id;
52 gboolean new_stream;
54 volatile gint destroyed;
58
60typedef struct imquic_roq_callbacks {
62 void (* new_connection)(imquic_connection *conn, void *user_data);
65 uint64_t flow_id, uint8_t *bytes, size_t blen);
67 void (* connection_gone)(imquic_connection *conn, uint64_t error_code, const char *reason);
69
73
77void imquic_roq_new_connection(imquic_connection *conn, void *user_data);
84void imquic_roq_stream_incoming(imquic_connection *conn, uint64_t stream_id,
85 uint8_t *bytes, uint64_t length, gboolean complete);
90void imquic_roq_datagram_incoming(imquic_connection *conn, uint8_t *bytes, uint64_t length);
95void imquic_roq_connection_gone(imquic_connection *conn, uint64_t error_code, const char *reason);
97
101
105void imquic_roq_qlog_add_rtp_packet(json_t *data, uint64_t flow_id, uint64_t length);
110void imquic_roq_qlog_stream_opened(imquic_qlog *qlog, uint64_t stream_id, uint64_t flow_id);
117void imquic_roq_qlog_stream_packet_created(imquic_qlog *qlog, uint64_t stream_id, uint64_t flow_id, uint8_t *bytes, size_t length);
124void imquic_roq_qlog_stream_packet_parsed(imquic_qlog *qlog, uint64_t stream_id, uint64_t flow_id, uint8_t *bytes, size_t length);
130void imquic_roq_qlog_datagram_packet_created(imquic_qlog *qlog, uint64_t flow_id, uint8_t *bytes, size_t length);
136void imquic_roq_qlog_datagram_packet_parsed(imquic_qlog *qlog, uint64_t flow_id, uint8_t *bytes, size_t length);
138
139#endif
imquic RoQ public interface (headers)
imquic_roq_multiplexing
RTP Over QUIC multiplexing modes.
Definition imquic/roq.h:71
void imquic_roq_qlog_stream_packet_parsed(imquic_qlog *qlog, uint64_t stream_id, uint64_t flow_id, uint8_t *bytes, size_t length)
Add a stream_packet_parsed event.
Definition roq.c:321
void imquic_roq_qlog_stream_opened(imquic_qlog *qlog, uint64_t stream_id, uint64_t flow_id)
Add a stream_opened event.
Definition roq.c:298
void imquic_roq_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 roq.c:138
void imquic_roq_qlog_add_rtp_packet(json_t *data, uint64_t flow_id, uint64_t length)
Helper to add fields for RtpPacket to an event.
Definition roq.c:291
void imquic_roq_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 roq.c:185
void imquic_roq_init(void)
Initialize the native RoQ stack at startup.
Definition roq.c:51
void imquic_roq_qlog_datagram_packet_parsed(imquic_qlog *qlog, uint64_t flow_id, uint8_t *bytes, size_t length)
Add a datagram_packet_parsed event.
Definition roq.c:346
void imquic_roq_qlog_datagram_packet_created(imquic_qlog *qlog, uint64_t flow_id, uint8_t *bytes, size_t length)
Add a datagram_packet_created event.
Definition roq.c:334
void imquic_roq_deinit(void)
Uninitialize the native RoQ stack.
Definition roq.c:55
void imquic_roq_connection_gone(imquic_connection *conn, uint64_t error_code, const char *reason)
Callback the core invokes when an existing RoQ connection is not available anymore.
Definition roq.c:206
void imquic_roq_qlog_stream_packet_created(imquic_qlog *qlog, uint64_t stream_id, uint64_t flow_id, uint8_t *bytes, size_t length)
Add a stream_packet_created event.
Definition roq.c:308
void imquic_roq_new_connection(imquic_connection *conn, void *user_data)
Callback the core invokes when a new QUIC connection using RoQ is available.
Definition roq.c:118
GMutex imquic_mutex
imquic mutex implementation
Definition mutex.h:18
QLOG support (headers).
QUIC Connection.
Definition connection.h:38
QLOG instance.
Definition qlog.h:26
Definition refcount.h:77
RoQ public callbacks.
Definition internal/roq.h:60
void(* connection_gone)(imquic_connection *conn, uint64_t error_code, const char *reason)
Callback function to be notified about RoQ connections being closed.
Definition internal/roq.h:67
void(* new_connection)(imquic_connection *conn, void *user_data)
Callback function to be notified about new RoQ connections.
Definition internal/roq.h:62
void(* rtp_incoming)(imquic_connection *conn, imquic_roq_multiplexing multiplexing, uint64_t flow_id, uint8_t *bytes, size_t blen)
Callback function to be notified about incoming RTP packets.
Definition internal/roq.h:64
RoQ endpoint instance.
Definition internal/roq.h:34
imquic_connection * conn
Associated QUIC connection.
Definition internal/roq.h:36
GHashTable * packets
Current packet buffer, indexed by stream ID.
Definition internal/roq.h:40
GHashTable * stream_flows_out
Definition internal/roq.h:38
GHashTable * stream_flows_in
Stream flows, indexed by stream ID.
Definition internal/roq.h:38
imquic_mutex mutex
Mutex.
Definition internal/roq.h:42
RoQ stream (when using the same stream for multiple packets).
Definition internal/roq.h:46
uint64_t stream_id
QUIC Stream ID.
Definition internal/roq.h:48
volatile gint destroyed
Whether this instance has been destroyed (reference counting).
Definition internal/roq.h:54
uint64_t flow_id
RoQ Flow ID.
Definition internal/roq.h:50
gboolean new_stream
Whether this is a new stream.
Definition internal/roq.h:52
imquic_refcount ref
Reference counter.
Definition internal/roq.h:56