Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
31ecc04
quest: claim quest/m1/subscribe-ranges/dynamic
kixelated Oct 21, 2026
9312958
wip: fills replace group requests in moq-net
kixelated Oct 21, 2026
feb903e
wip: misses judged against the arrival ledger
kixelated Oct 21, 2026
5bfd23d
wip: refusals below a start wait on the feed; miss tests
kixelated Oct 21, 2026
3b400df
wip: callers and moq-ffi/moq-c move to fills
kixelated Oct 21, 2026
867d6ea
wip: bindings serve fills
kixelated Oct 21, 2026
823aca0
wip: migration notes, docs, and quest references
kixelated Oct 21, 2026
9391035
wip: finished copies serve fills; misses end with the feed; lints
kixelated Oct 21, 2026
68cf6de
Merge origin/main into quest/m1/subscribe-ranges/dynamic
kixelated Oct 21, 2026
2b2313b
fix(interop): point the Go client's MaxDelay at a duration
kixelated Oct 21, 2026
e8dec58
Merge remote-tracking branch 'origin/main' into pr-6171
kixelated Oct 21, 2026
6dc3135
fix(net): settle wide fills by run, not group by group
kixelated Oct 21, 2026
3e5ca7d
perf(net): bench fills over readers and runs, and keep a miss run flat
kixelated Oct 21, 2026
5e09300
style(net): rustfmt the fill tests
kixelated Oct 21, 2026
8712148
fix(net): a descending reader turns a queued fill newest first
kixelated Oct 21, 2026
8c342d1
Merge remote-tracking branch 'origin/main' into pr-6171
kixelated Oct 21, 2026
a65c8c6
quest: point the resume-outage links at the PR that finished it
kixelated Oct 21, 2026
6ab7523
fix(net): index a fill's answers so refusing it group by group stays …
kixelated Oct 21, 2026
42af07c
fix(net): a reader from an earlier group widens a queued fill to its …
kixelated Oct 21, 2026
bf30e38
quest: refill groups evicted after a reader judged them
kixelated Oct 21, 2026
ff3a197
Merge origin/main into quest/m1/subscribe-ranges/dynamic
kixelated Oct 22, 2026
9fa2979
fix(net): hand filled groups out in the reader's order
kixelated Oct 22, 2026
8335b35
Merge origin/main into quest/m1/subscribe-ranges/dynamic
kixelated Oct 22, 2026
ba5ffbc
fix(net): build moq-net's tests without the async feature
kixelated Oct 22, 2026
3ce4b54
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 22, 2026
a098105
fix(bindings): saturate a peer's max delay instead of wrapping negative
kixelated Oct 22, 2026
738ba58
fix(net): a narrowed reader leaves the rest of its fill
kixelated Oct 22, 2026
1d3aced
fix(net): a fill owes only what its readers still read
kixelated Oct 23, 2026
1674f38
fix(net): a held feed fetch replaces an abandoned one under the limit
kixelated Oct 23, 2026
c9a7d7d
feat(net): fill handlers watch demand for a single group
kixelated Oct 23, 2026
da92a16
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 23, 2026
54e0a6e
fix(net): a SUBSCRIPTION_ENDED copy does not linger
kixelated Oct 23, 2026
83fea78
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 23, 2026
b5d2930
doc(ffi): migrate the generated Go and Dart bindings to fills
kixelated Oct 23, 2026
0016bab
fix(net): a wide fill forgets refusals its readers took
kixelated Oct 23, 2026
95b8f35
fix(net): a descending reader's split miss queues newest first
kixelated Oct 23, 2026
24aadef
fix(net): a reader forgets misses behind its window
kixelated Oct 23, 2026
a8f37e6
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 23, 2026
4a89d3d
fix(interop): the Go finish client passes an optional max delay
kixelated Oct 23, 2026
ddc9717
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 23, 2026
b8f6ceb
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 23, 2026
39dbe44
fix(net): narrowing releases accepted groups; time starts before the …
kixelated Oct 23, 2026
b60b1be
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 23, 2026
f8cfe46
style(net): format the new fill tests
kixelated Oct 23, 2026
30f0fda
fix(net): fill sessions watch an accepted group's own readers
kixelated Oct 23, 2026
5f8dba4
Merge remote-tracking branch 'origin/main' into pr-6171-iterate
kixelated Oct 23, 2026
434fa51
docs(net): a fill's per-group demand is what still waits for the group
kixelated Oct 23, 2026
8390fc1
Merge remote-tracking branch 'origin/main' into merge-6171-a99af
kixelated Oct 23, 2026
c8354c5
chore(lint): give the fill suppressions a reason
kixelated Oct 23, 2026
4450d46
Merge remote-tracking branch 'origin/main' into merge-6171-a99af
kixelated Oct 23, 2026
5f0d117
fix(net): a fill starts at the frame of its own range
kixelated Oct 23, 2026
f441052
fix(net): a range starting mid-group heads its own fill
kixelated Oct 23, 2026
6de2fd2
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 23, 2026
2b66d72
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
6930b84
fix(net): a reader gives up a stalled fill once it is stale
kixelated Oct 24, 2026
a1e9a4f
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
d0388d5
fix(net): judge a stalled fill by each stretch between its arrivals
kixelated Oct 24, 2026
612570a
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
2e57a53
style(net): format the stretch test
kixelated Oct 24, 2026
c42d338
fix(net): an ordered reader leaves a filled group it takes
kixelated Oct 24, 2026
845ae16
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
1be9105
fix(net): an aborted cached group stays owed to its fill
kixelated Oct 24, 2026
8c3410a
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
f4ddf6d
test(net): drop an unneeded mut
kixelated Oct 24, 2026
043171a
fix(net): only live arrivals retire a fill's misses
kixelated Oct 24, 2026
9251926
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
6ef1da4
fix(net): pass the new superseded argument when judging owed stretches
kixelated Oct 24, 2026
d1ebeca
feat(net): refuse a fill's groups without naming them dropped
kixelated Oct 24, 2026
cd050e1
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
fc2af59
fix(dart): regenerate the subscription max delay default
kixelated Oct 24, 2026
d61b75e
test(py): drop an unneeded type ignore
kixelated Oct 24, 2026
f6051fc
fix(net): a source's miss refuses only the request it answers
kixelated Oct 24, 2026
fa4df42
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
bdf024f
Merge remote-tracking branch 'origin/main' into merge-6171-a9393
kixelated Oct 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions dart/moq/lib/src/aliases.dart
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ typedef TrackProducer = MoqTrackProducer;
/// A subscriber-requested track not yet accepted: accept it for a [TrackProducer] or abort it.
typedef TrackRequest = MoqTrackRequest;

/// A stream of uncached group requests for one track, for serving fetches on demand.
/// A stream of the fills readers of one track need: runs of groups the cache lacks.
typedef TrackDynamic = MoqTrackDynamic;

/// A watch-only handle to whether a published track has subscribers; holding it keeps nothing open.
Expand All @@ -109,8 +109,8 @@ typedef TrackDemand = MoqTrackDemand;
/// The read side of a raw track: yields groups in sequence order, skipping ahead if it falls behind.
typedef TrackConsumer = MoqTrackConsumer;

/// A request to produce one uncached group for a fetch consumer.
typedef GroupRequest = MoqGroupRequest;
/// A run of groups readers miss: accept each group you have and drop the rest.
typedef Fill = MoqFill;

/// The write side of a single group: append frames to it.
typedef GroupProducer = MoqGroupProducer;
Expand Down
18 changes: 16 additions & 2 deletions dart/moq/lib/src/durations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,25 @@ extension BackoffDuration on MoqBackoff {

/// Duration views over the subscription knobs.
extension SubscriptionDuration on MoqSubscription {
/// Upper bound on buffering before a stalled group is skipped, or null for the default.
/// Upper bound on buffering before a stalled group is skipped, or null for the
/// publisher's max age alone.
Duration? get maxDelay =>
maxDelayUs == null ? null : Duration(microseconds: maxDelayUs!);
maxDelayUs == null ? null : _saturatingMicros(maxDelayUs!);
}

/// Duration views over a fill.
extension FillDuration on MoqFill {
/// The most tolerant age budget among its readers, or null for the publisher's max age alone.
Duration? get maxDelay {
final us = maxDelayUs();
return us == null ? null : _saturatingMicros(us);
}
}

/// A u64 past 2^63 - 1 microseconds, such as a peer's delay, reads back negative.
Duration _saturatingMicros(int us) =>
Duration(microseconds: us < 0 ? 0x7FFFFFFFFFFFFFFF : us);

/// Duration views over the publisher-side track settings.
extension TrackInfoDuration on MoqTrackInfo {
/// Maximum age of a non-latest group before the publisher evicts it, or null for the default.
Expand Down
Loading
Loading