wired
libc-free QUIC/HTTP3 SDK in C for x86_64-linux
Loading...
Searching...
No Matches
wired_moqtrun_track Struct Reference

One track a peer PUBLISHes (chat or audio), and the subscribers recorded against it. More...

#include <moqtrun.h>

Data Fields

int in_use
 1 while the slot holds a PUBLISHed track.
u8 name [WIRED_MOQTRUN_MAX_NAME]
 Copied Track Name.
usz name_len
 Bytes of name in use.
u64 own_alias
 Track Alias this slot's PUBLISH declared.
wired_moqtrun_sub subs [WIRED_MOQTRUN_MAX_SUBS]
 Subscriptions recorded against the track (active marks live).
wired_moqtrun_relay relays [WIRED_MOQTRUN_MAX_RELAYS]
 Publisher streams being relayed (wired_moqtrun_relay).
u8 ns [WIRED_MOQTRUN_MAX_NS]
 Encoded Track Namespace this slot's PUBLISH declared: a SUBSCRIBE matches on namespace AND name (draft 1.5 Full Track Name).
usz ns_len
 Bytes of ns in use; 0 for the hub's own tracks.
moqctl_loc largest
 Largest Object published on this track (10.2.16), valid when has_largest; restarts with each PUBLISH.
int has_largest
 1 once an Object was published (largest valid).
u64 request_id
 Request ID of the PUBLISH that claimed this slot.
u64 subgroup_timeout_ms
 The PUBLISH's SUBGROUP_DELIVERY_TIMEOUT Track Property (12.6) in ms, 0 when absent: min()ed into each subscription's effective timeout (wired_moqtrun_sub.subgroup_timeout).
u8 default_pub_prio
 The PUBLISH's DEFAULT_PUBLISHER_PRIORITY Track Property (12.4), 128 when absent: the Publisher Priority of a header that omits it.
u64 cache_tag
 This incarnation's records in the hub cache (wired_moqt_hub.cache), fresh on every PUBLISH, so a later track in the same slot never reads the old one's Objects.
u64 up_streams
 SUBGROUP streams the PUBLISH's publisher opened on this incarnation: what its PUBLISH_DONE Stream Count is checked against.
u64 pubdone_status
 The publisher's PUBLISH_DONE (draft-19 10.11) awaiting relay: its Status Code and Stream Count, and the moqt clock past which it goes out regardless (WIRED_MOQTRUN_PUBDONE_WAIT_MS).
u64 pubdone_streams
 The held PUBLISH_DONE's Stream Count.
u64 pubdone_deadline
 Clock past which the held PUBLISH_DONE goes out anyway.
u8 pubdone_pending
 1 while a PUBLISH_DONE is held.
moqctl_loc track_end
 The Object with Status END_OF_TRACK, valid while end_flags bit 0.
moqctl_loc group_end
 The latest Object with Status END_OF_GROUP, valid while end_flags bit 1.
u8 end_flags
 Bit 0: track_end set; bit 1: group_end set.
u8 malformed
 1 once an Object past track_end or group_end arrived (draft-22 12.1 Malformed Track); the track then ends MALFORMED_TRACK.
u8 props_len
 Bytes of props in use: the claiming PUBLISH's (or upstream SUBSCRIBE_OK's) Track Properties, 0 when none or when they exceed WIRED_MOQTRUN_TRACK_PROPS_MAX.
u8 props [WIRED_MOQTRUN_TRACK_PROPS_MAX]
 The Track Properties forwarded in SUBSCRIBE_OK (INCLUDE_PROPERTIES, draft-22 9.20.21).

Detailed Description

One track a peer PUBLISHes (chat or audio), and the subscribers recorded against it.

in_use marks the slot live; own_alias is the Track Alias this hub assigned to this slot's own PUBLISH (draft SS10.7 moqsub scope).

relays[] tracks every publisher stream currently being forwarded on this track (wired_moqtrun_relay's own doc): a later wired_moqt_on_stream_data call whose stream_id matches an entry forwards its bytes straight to that entry's subscriber streams – no SUBGROUP_HEADER re-decode (the audio track writes its header only once, on the stream's first call; later calls carry bare Objects that must not be misread as a header).

Field Documentation

◆ ns

u8 wired_moqtrun_track::ns[WIRED_MOQTRUN_MAX_NS]

Encoded Track Namespace this slot's PUBLISH declared: a SUBSCRIBE matches on namespace AND name (draft 1.5 Full Track Name).

Empty on the hub's own blob/live tracks, which match by name only.


The documentation for this struct was generated from the following file: