|
wired
libc-free QUIC/HTTP3 SDK in C for x86_64-linux
|
One subscriber recorded against the hub's track: which session, and the Track Alias its SUBSCRIBE_OK named – the alias every SUBGROUP_HEADER and OBJECT_DATAGRAM relayed to that session carries (draft-22 3.1.3: unique per Track within the session; moqtrun_session_alias). More...
#include <moqtrun.h>
Data Fields | |
| usz | session_idx |
| Subscriber's index in wired_moqt_hub.peers. | |
| u64 | track_alias |
| Track Alias relayed Objects carry on the subscriber's session. | |
| int | active |
| 1 while the subscription is Established; 0 marks the slot free. | |
| u64 | request_id |
| SUBSCRIBE's Request ID (draft-ietf-moq-transport-19 10.6). | |
| u64 | delivery_timeout |
| OBJECT_DELIVERY_TIMEOUT (10.2.4) in ms, 0 when absent or none: an Object reaching the hub longer ago is not sent (draft 8). | |
| u64 | subgroup_timeout |
| Effective SUBGROUP_DELIVERY_TIMEOUT (10.2.6) in ms: min of the publisher's Track Property and the subscriber's parameter over their non-zero values, 0 when neither set. | |
| moqctl_loc | start |
| Location Filter Start (9.3.1), resolved at SUBSCRIBE time; {0, 0} when unfiltered. | |
| u64 | end_group |
| Last Group to deliver (AbsoluteRange), valid when has_end_group. | |
| u64 | end_object |
| Last Object of end_group to deliver (draft-22 Absolute Range, 0x04), valid when has_end_object; otherwise the whole end Group passes. | |
| u8 | priority |
| SUBSCRIBER_PRIORITY (10.2.7), valid when has_priority. | |
| u8 | has_priority |
| 1 when SUBSCRIBER_PRIORITY was present (priority valid). | |
| u8 | group_order |
| GROUP_ORDER (10.2.8); 0 = absent (the publisher's preference). | |
| u8 | forward_off |
| 1 when FORWARD was 0 (10.2.17): no Objects go to this subscription. | |
| u8 | has_delivery_timeout |
| 1 when OBJECT_DELIVERY_TIMEOUT was present (delivery_timeout valid). | |
| u8 | has_end_group |
| 1 when the filter names a last Group (end_group valid). | |
| u8 | has_end_object |
| 1 when the filter names a last Object (end_object valid). | |
| moqctl_loc | jl |
| Joining Location (draft-ietf-moq-transport-19 5.1): the Largest Object SUBSCRIBE_OK carried, valid when has_jl – where a Joining Fetch ends (10.12.2.1). | |
| u8 | has_jl |
| 1 when jl holds a Joining Location. | |
| moqctl_rangeloc | filter |
| The LOCATION_FILTER as sent (version-neutral), valid when has_filter: what a re-attach re-resolves start/end from. | |
| u8 | has_filter |
| 1 when filter holds the subscription's LOCATION_FILTER. | |
| wired_moqtrun_rngrow | rngf [WIRED_MOQTRUN_MAX_FILTER_RANGES] |
| Range Filter rows (10.2.10-10.2.14), one Range per row; capacity is the advertised MAX_FILTER_RANGES. | |
| u8 | rngf_n |
| Rows of rngf in use; 0 = no Range Filter. | |
| u8 | blob_sent |
| Hub blob track only: 1 once the blob went out to this subscription, so a FORWARD 1 -> 0 -> 1 update never sends it twice. | |
| u8 | no_props |
| 1 when the SUBSCRIBE sent INCLUDE_PROPERTIES=0: its SUBSCRIBE_OK carries empty Track Properties (draft-22 9.20.21). | |
| u64 | stream_count |
| Streams the hub opened for this subscription (relay, blob, live and fetch streams alike): PUBLISH_DONE's Stream Count (draft 10.10). | |
| u64 | newest_group |
| The newest Group a lossy relay stream was opened in for this subscription, valid while newest_sid is not 0. | |
| u64 | newest_sid |
| That stream (0: none yet – a server-initiated uni stream id is never 0). | |
| u64 | ssts_base |
| Group of verdict bit 0: bit k of ssts_known / ssts_fwd is the recorded verdict for Group ssts_base + k (moqtss_sub_pass). | |
| u16 | ssts_known |
| Bit k: a final SSTS decision for Group ssts_base + k was stamped. | |
| u16 | ssts_fwd |
| Bit k: that decision picked this subscription's track. | |
| u8 | ssts_on |
| 1 while the subscription is a member of a switching set: only Groups decided for it are forwarded. | |
| u8 | sw_role |
| MOQTSW_ROLE_*: NONE, OLD (switched away from, its end pending) or NEW (activated by a switch, starts at sw_g). | |
| u8 | sw_mode |
| OLD only: 0 Hard, 1 Soft. | |
| u8 | sw_done |
| OLD only: 1 when the switch asked for Publish Done (flag 0x80). | |
| u64 | sw_g |
| The switch boundary G: OLD ends at G-1, NEW starts at {G, 0}. | |
| u64 | sw_peer_rid |
| OLD only: the activating subscription's Request ID. | |
| u64 | sw_deadline |
| OLD Soft only: clock (wired_moqt_tick) past which OLD gives up on its track reaching G-1 – WIRED_MOQTSW_SOFT_WAIT_MS of wall clock from the switch; the give-up happens only while nothing of OLD is open. | |
One subscriber recorded against the hub's track: which session, and the Track Alias its SUBSCRIBE_OK named – the alias every SUBGROUP_HEADER and OBJECT_DATAGRAM relayed to that session carries (draft-22 3.1.3: unique per Track within the session; moqtrun_session_alias).
| u64 wired_moqtrun_sub::newest_sid |
That stream (0: none yet – a server-initiated uni stream id is never 0).
A stream opened in a newer Group resets it: the older Group's unsent backlog is stale for a live subscriber.
| wired_moqtrun_rngrow wired_moqtrun_sub::rngf[WIRED_MOQTRUN_MAX_FILTER_RANGES] |
Range Filter rows (10.2.10-10.2.14), one Range per row; capacity is the advertised MAX_FILTER_RANGES.
OBJECTID_FILTER rows gate each Object at the per-Object (datagram) gate. ponytail: subgroup/priority/property filter rows are validated and stored but pass at delivery – the group-granular stream gates never see those fields (the Location Filter's granularity note); evaluate them if the hub ever reads subgroup ids or properties at delivery.
| u64 wired_moqtrun_sub::subgroup_timeout |
Effective SUBGROUP_DELIVERY_TIMEOUT (10.2.6) in ms: min of the publisher's Track Property and the subscriber's parameter over their non-zero values, 0 when neither set.
Applied as a second age bound beside delivery_timeout (draft 8; the hub's io cannot see "all data committed", so the age model stands in for the post-FIN timer).