@blockcast/mmt-container 0.4.1 → 0.5.0-main.2c1f81817995
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/browser-runtime.js +3458 -356
- package/dist/browser-runtime.js.map +4 -4
- package/dist/cmcd-producer.d.ts +5 -1
- package/dist/cmcd-producer.d.ts.map +1 -1
- package/dist/cmcd-producer.js.map +2 -2
- package/dist/delivery-catalog.js +18 -2
- package/dist/delivery-catalog.js.map +2 -2
- package/dist/fec-manager.d.ts +21 -16
- package/dist/fec-manager.d.ts.map +1 -1
- package/dist/fec-manager.js +177 -80
- package/dist/fec-manager.js.map +3 -3
- package/dist/held-layer-admission.d.ts +58 -0
- package/dist/held-layer-admission.d.ts.map +1 -0
- package/dist/held-layer-admission.js +105 -0
- package/dist/held-layer-admission.js.map +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +2 -2
- package/dist/mmtp-container-parser.no-modules.js +2682 -1023
- package/dist/mmtp-container-parser.no-modules.js.map +4 -4
- package/dist/mmtp-fec-session.d.ts +36 -3
- package/dist/mmtp-fec-session.d.ts.map +1 -1
- package/dist/mmtp-fec-session.js +114 -5
- package/dist/mmtp-fec-session.js.map +3 -3
- package/dist/mmtp-router.d.ts +72 -28
- package/dist/mmtp-router.d.ts.map +1 -1
- package/dist/mmtp-router.js +321 -203
- package/dist/mmtp-router.js.map +2 -2
- package/dist/multicast-auth-catalog.d.ts +10 -2
- package/dist/multicast-auth-catalog.d.ts.map +1 -1
- package/dist/multicast-auth-catalog.js +422 -22
- package/dist/multicast-auth-catalog.js.map +4 -4
- package/dist/multicast-manager.d.ts +48 -9
- package/dist/multicast-manager.d.ts.map +1 -1
- package/dist/multicast-manager.js +3406 -340
- package/dist/multicast-manager.js.map +4 -4
- package/dist/multicast-transport.d.ts +4 -1
- package/dist/multicast-transport.d.ts.map +1 -1
- package/dist/multicast-transport.js +20 -3
- package/dist/multicast-transport.js.map +2 -2
- package/dist/no-modules.d.ts +1 -2
- package/dist/no-modules.d.ts.map +1 -1
- package/dist/no-modules.js +2668 -1007
- package/dist/no-modules.js.map +4 -4
- package/dist/repair-fetch.d.ts +10 -1
- package/dist/repair-fetch.d.ts.map +1 -1
- package/dist/repair-fetch.js +5 -2
- package/dist/repair-fetch.js.map +2 -2
- package/package.json +5 -14
- package/src/cmcd-producer.ts +6 -1
- package/src/fec-manager.ts +121 -131
- package/src/held-layer-admission.ts +161 -0
- package/src/index.ts +5 -9
- package/src/mmtp-fec-session.ts +76 -3
- package/src/mmtp-router.ts +390 -272
- package/src/multicast-auth-catalog.ts +81 -8
- package/src/multicast-manager.ts +189 -48
- package/src/multicast-transport.ts +6 -2
- package/src/no-modules.ts +1 -6
- package/src/repair-fetch.ts +24 -4
- package/dist/manifest-auth-plan.d.ts +0 -31
- package/dist/manifest-auth-plan.d.ts.map +0 -1
- package/dist/manifest-auth-plan.js +0 -426
- package/dist/manifest-auth-plan.js.map +0 -7
- package/dist/source-auth.d.ts +0 -2
- package/dist/source-auth.d.ts.map +0 -1
- package/dist/source-auth.js +0 -3912
- package/dist/source-auth.js.map +0 -7
- package/src/manifest-auth-plan.ts +0 -55
- package/src/source-auth.ts +0 -1
- package/test-vectors/generate-source-auth-fixture.mjs +0 -114
- package/test-vectors/source-auth-v1.json +0 -61
package/dist/fec-manager.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { type FecBlockProfile } from '@blockcast/mmt-base';
|
|
|
12
12
|
import { type IsoBlockRange, type IsoPlacedSource, type IsoRepairPlacement } from './iso-block-locator.js';
|
|
13
13
|
import { MIN_INTERLEAVE_DEPTH_MS } from './fec-state.js';
|
|
14
14
|
import { type BlockClass, type BlockClassifierGeometry, type ClassifierMode, type ClassifierReason, type ReclassificationEvidence, type SourceSymbolEvidence, type TrackKind } from './block-policy.js';
|
|
15
|
+
import { type FecFailClosedReason } from './held-layer-admission.js';
|
|
15
16
|
import type { MmtpDeliveryProvenance } from './mfu-reassembler.js';
|
|
16
17
|
import type { FecWorkerClient, FecTrackStats, FrameMeta } from '@blockcast/fec-worker';
|
|
17
18
|
export { MIN_INTERLEAVE_DEPTH_MS };
|
|
@@ -196,21 +197,7 @@ export interface FecRepairLayer {
|
|
|
196
197
|
rsIdOffset: number;
|
|
197
198
|
repairSymbols: number;
|
|
198
199
|
}
|
|
199
|
-
|
|
200
|
-
* Why a source track's FEC failed closed at runtime (fec-01 6.3.9): a repair
|
|
201
|
-
* packet stated an RSB_length below a held layer's total B_i on that layer's
|
|
202
|
-
* own repair track (`below_own_track_total`), or at or after the anchor, the
|
|
203
|
-
* earliest block in SS_Start serial order whose repair carried >= B_i
|
|
204
|
-
* (`below_anchored_total`). Repair for the track is refused from then on.
|
|
205
|
-
*/
|
|
206
|
-
export interface FecFailClosedReason {
|
|
207
|
-
code: 'below_own_track_total' | 'below_anchored_total';
|
|
208
|
-
layer: number;
|
|
209
|
-
total: number;
|
|
210
|
-
rsbLength: number;
|
|
211
|
-
ssStart: number;
|
|
212
|
-
anchor?: number;
|
|
213
|
-
}
|
|
200
|
+
export type { FecFailClosedReason } from './held-layer-admission.js';
|
|
214
201
|
/** A {@link FecFailClosedReason} with the stream it closed, as reported to the fail-closed handler. */
|
|
215
202
|
export interface FecFailClosedEvent extends FecFailClosedReason {
|
|
216
203
|
packetId: number;
|
|
@@ -275,7 +262,12 @@ export declare class FECManager {
|
|
|
275
262
|
onBlockResolved: ((sbn: number, packetId: number, catalogTrackName: string | undefined) => void) | null;
|
|
276
263
|
/** A stream's SBN went backwards (or jumped implausibly): the source restarted. */
|
|
277
264
|
onSourceDiscontinuity: ((packetId: number, catalogTrackName: string | undefined) => void) | null;
|
|
278
|
-
|
|
265
|
+
/**
|
|
266
|
+
* A recovered source symbol. Return false when admission refused the
|
|
267
|
+
* packet it carries (bc-provenance v2, draft-ramadan-moq-multicast-01
|
|
268
|
+
* 7.2.7): the block is then unrecovered and stays open to its FEC deadline.
|
|
269
|
+
*/
|
|
270
|
+
onBlockRecovered: ((sbn: number, packetId: number, data: ArrayBuffer, meta: FrameMeta, catalogTrackName?: string) => boolean | void) | null;
|
|
279
271
|
onFecStatsUpdate: ((packetId: number, stats: FecTrackStats) => void) | null;
|
|
280
272
|
/** Internal state for diagnostics — not part of the public stats API. */
|
|
281
273
|
get diagnostics(): {
|
|
@@ -434,6 +426,11 @@ export declare class FECManager {
|
|
|
434
426
|
* a block no symbol reached (one materialized because a later SBN arrived).
|
|
435
427
|
*/
|
|
436
428
|
blockAnchorAtMs(sbn: number, packetId: number, catalogTrackName?: string): number | undefined;
|
|
429
|
+
/**
|
|
430
|
+
* How long ago (ms) the oldest open block of the stream, one with an FEC
|
|
431
|
+
* deadline, took its first accepted symbol; undefined with none open.
|
|
432
|
+
*/
|
|
433
|
+
oldestOpenBlockAgeMs(packetId: number, catalogTrackName: string): number | undefined;
|
|
437
434
|
/** Absolute fail deadline of a still-open block, or undefined. */
|
|
438
435
|
blockDeadlineAtMs(sbn: number, packetId: number, catalogTrackName?: string): number | undefined;
|
|
439
436
|
/**
|
|
@@ -691,6 +688,14 @@ export declare class FECManager {
|
|
|
691
688
|
* never reads the manager-global K or timeout.
|
|
692
689
|
*/
|
|
693
690
|
trackBlock(sbn: number, packetId: number, catalogTrackName: string | undefined, esi: number, evidence: SourceSymbolEvidence): void;
|
|
691
|
+
/**
|
|
692
|
+
* Run `fn` with `receivedAtMs` (performance.now() clock) as the receipt
|
|
693
|
+
* time of what it feeds. Within a consumer the bc-provenance profile
|
|
694
|
+
* governs, a datagram held on a miss and admitted later keeps its receipt
|
|
695
|
+
* time (fec-01 9): it anchors its block's ts and arms the block's
|
|
696
|
+
* deadlines from then, never later than they are already armed.
|
|
697
|
+
*/
|
|
698
|
+
withReceiptTime(receivedAtMs: number, fn: () => void): void;
|
|
694
699
|
/** Refresh deadlines after accepted block activity. */
|
|
695
700
|
noteBlockActivity(sbn: number, packetId: number, catalogTrackName?: string, sourceProgress?: boolean): void;
|
|
696
701
|
/** Check whether a block has already been completed (clean or recovered). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fec-manager.d.ts","sourceRoot":"","sources":["../src/fec-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fec-manager.d.ts","sourceRoot":"","sources":["../src/fec-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,uBAAuB,EAE5B,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAA8C,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAChH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAEb,SAAS,EAEV,MAAM,uBAAuB,CAAA;AAW9B,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAUlC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IAC1E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAA;IAChH,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAAA;IACzC,6EAA6E;IAC7E,uBAAuB,CAAC,SAAS,EAAE,WAAW,GAAG,OAAO,CAAA;IACxD;;;;;;;;OAQG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IACxC,KAAK,CAAC,IAAI,IAAI,CAAA;IACd,WAAW,CAAC,IAAI,IAAI,CAAA;CACrB,CAAA;AAED,6CAA6C;AAC7C,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,qBAAqB,EAAE,iBAAiB,EAAE,CAAA;IAC1C,yGAAyG;IACzG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAA;IACpB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,sDAAsD;IACtD,OAAO,EAAE,KAAK,CAAC,aAAa,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpD,8FAA8F;IAC9F,0BAA0B,EAAE,MAAM,CAAA;IAClC,2FAA2F;IAC3F,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,iGAAiG;IACjG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,KAAK,CAAA;AAEjD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAA;IACvC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,oFAAoF;IACpF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,eAAe,CAAA;AAMlE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB;AA0BD,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,eAAe,CAAA;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,cAAc,CAAA;IACtC,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,uBAAuB,CAAA;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IACxC,sEAAsE;IACtE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B;AAED,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,uGAAuG;AACvG,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC;AAiBD,iDAAiD;AACjD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEzC,yEAAyE;AACzE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAA;AAyFhF,4DAA4D;AAC5D,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,UAAU,CAAA;AAEhE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAA;AAEhD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAA;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,kBAAkB,CAAA;CAC7C;AAED,qBAAa,UAAU;;IAyQrB,cAAc,EACV,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,GACpE,IAAI,CAAO;IACf,eAAe,EACX,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,GACpE,IAAI,CAAO;IACf,4EAA4E;IAC5E,aAAa,EACT,CAAC,CACC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,UAAU,EAAE,UAAU,KACnB,IAAI,CAAC,GACV,IAAI,CAAO;IACf;;;;;;;;;OASG;IACH,oBAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAO;IAWjF,cAAc,EACV,CAAC,CACC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,UAAU,EAAE,UAAU,KACnB,IAAI,CAAC,GACV,IAAI,CAAO;IACf,gBAAgB,EACZ,CAAC,CACC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,GAAG,QAAQ,EAC/B,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,GAAG,EAAE,SAAS,GAAG,IAAI,KAClB,IAAI,CAAC,GACV,IAAI,CAAO;IAEf;;;;OAIG;IACH,eAAe,EACX,CAAC,CACC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,SAAS,KACX,IAAI,CAAC,GACV,IAAI,CAAO;IACf,mFAAmF;IACnF,mBAAmB,EACf,CAAC,CACC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,IAAI,EAAE,UAAU,EAChB,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,wBAAwB,KAC/B,IAAI,CAAC,GACV,IAAI,CAAO;IACf,mEAAmE;IACnE,gBAAgB,EACZ,CAAC,CACC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,gBAAgB,GAAG,IAAI,KAC5B,IAAI,CAAC,GACV,IAAI,CAAO;IASf,0EAA0E;IAC1E,eAAe,EACX,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,GAC/E,IAAI,CAAO;IACf,0EAA0E;IAC1E,eAAe,EACX,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,GAC/E,IAAI,CAAO;IACf,mFAAmF;IACnF,qBAAqB,EACjB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC,GAClE,IAAI,CAAO;IAGf;;;;OAIG;IACH,gBAAgB,EACZ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC,GAClH,IAAI,CAAO;IACf,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,GAAG,IAAI,CAAO;IA+9ClF,yEAAyE;IACzE,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;;kBAnjET,MAAM;mBAER,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,aAAa,GACb,qBAAqB,GACrB,WAAW,GACX,QAAQ,GACR,qBAAqB;sBACf,MAAM;iBACX,MAAM;+BACQ,MAAM;yBACZ,MAAM;wBACP,MAAM,EAAE;yBACP,MAAM,EAAE;yBACR,QAAQ,GAAG,MAAM,GAAG,MAAM;kCACjB,MAAM;4BACZ,OAAO;mBAChB,MAAM;;MAqjEZ;IAED,IAAI,QAAQ,IAAI,QAAQ,CA+CvB;IAED;;;;;OAKG;IACH,mBAAmB,CACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,GACzD,MAAM,IAAI;IAKb,mFAAmF;IACnF,kBAAkB,IAAI,IAAI;IAa1B,wDAAwD;IACxD,IAAI,uBAAuB,IAAI,uBAAuB,CAErD;IAED;;;;;;;;;;OAUG;IACH,0BAA0B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI;IA6BnE,0DAA0D;IAC1D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAsH5D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IA+GrC;;;;;OAKG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO;IAiJV,0EAA0E;IAC1E,wBAAwB,CACtB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,MAAM,GAAG,SAAS;IAuBrB;wEACoE;IACpE,cAAc,IAAI,KAAK,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;QAC5C,WAAW,EAAE,MAAM,CAAC;QACpB,CAAC,EAAE,MAAM,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAsBF,uEAAuE;IACvE,IAAI,WAAW,IAAI,cAAc,GAAG,IAAI,CAEvC;IAED,kFAAkF;IAClF,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAChD,gCAAgC;IAChC,IAAI,UAAU,IAAI,MAAM,CAA+B;IACvD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IACzD,4DAA4D;IAC5D,IAAI,iBAAiB,IAAI,MAAM,CAAsC;IACrE,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAGhE;;;;;;OAMG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,IAAI;IAI1E;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxD;;;OAGG;IACH,oBAAoB,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;IAM3E;;;;OAIG;IACH,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB;QACD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAA;KAC/C,GAAG,SAAS;IAUb;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAMxG;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG7F;;;OAGG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQpF,kEAAkE;IAClE,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAG/F;;;;;;OAMG;IACH,kBAAkB,CAChB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,SAAS,EAAE,MAAM,GAChB,OAAO;IAgBV;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAKjF,uEAAuE;IACvE,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI/D;;;OAGG;IACH,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9D;;;;;;;;;;OAUG;IACH,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKlE,oEAAoE;IACpE,4BAA4B,CAC1B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,MAAM,GAAG,SAAS;IAYrB,oFAAoF;IAKpF,oFAAoF;IACpF,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAkEpE,kGAAkG;IAClG,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjE,0FAA0F;IAC1F,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAK9D;;;OAGG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,IAAI,EAAE,MAAM,GACX;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKtC;;;OAGG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACpB,OAAO;IAkBV;;;;;;OAMG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAAC,aAAa,CAAC;IA4BpC;;;;;;OAMG;IACH,yBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,kBAAkB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAMrF;;;;OAIG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,EAAE,CAAA;KAAE,EAAE;IA0BvE;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,SAAS,MAAM,EAAE,GAAG,IAAI;IAyB3B;;;;;OAKG;IACH,IAAI,cAAc,IAAI;QACpB,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,EAAE,MAAM,CAAA;QACnB,sBAAsB,EAAE,MAAM,CAAA;QAC9B,2BAA2B,EAAE,MAAM,CAAA;KACpC,CAWA;IAED,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI5C,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIlC,uDAAuD;IACvD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIrD,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,uBAAuB;IAIjF,2CAA2C;IAC3C,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAA;KAAE;IAS5D;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO;IAKtE,wDAAwD;IACxD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,UAAU;IAOnF;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAI7F,0EAA0E;IAC1E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3E;;;OAGG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,GACrB,IAAI;IAiBP,gCAAgC;IAChC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAwDzC;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAI3F,8DAA8D;IAC9D,aAAa,CACX,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;IAYP;;;;;;;OAOG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,gBAAgB,EACxB,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;IAgNP;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO;IAwGpE,iGAAiG;IACjG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAsC/B;;;;;;;;;OASG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,UAAU,GAAG,IAAI;IAoEpB;;;;;;OAMG;IACH,sBAAsB,CACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,OAAO;IAMV;;;;;;;;;;;OAWG;IACH,qBAAqB,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO;IAeV;;;;;;;;;;;;OAYG;IACH,qBAAqB,CACnB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO;IAyCV;;;;OAIG;IACH,uBAAuB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAIpF,+EAA+E;IAC/E,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIjG;;;;;;OAMG;IACH,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,gBAAgB,CAAC,EAAE,MAAM,GACxB,UAAU,GAAG,IAAI;IAuMpB;;;;;;;;;OASG;IACH,UAAU,CACR,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,oBAAoB,GAC7B,IAAI;IAyGP;;;;;;OAMG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAuB3D,uDAAuD;IACvD,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,cAAc,UAAQ,GACrB,IAAI;IAwHP,6EAA6E;IAC7E,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO;IAIpF,iFAAiF;IACjF,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAQnF;;;;OAIG;IACH,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAa/E;;;;;;;;;;;OAWG;IACH,uBAAuB,CACrB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,sBAAsB;IAQzB,4EAA4E;IAC5E,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,iBAAiB,GAAG,IAAI;IAM3B,kFAAkF;IAClF,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI;IAUnF,OAAO,IAAI,IAAI;CA8DhB"}
|
package/dist/fec-manager.js
CHANGED
|
@@ -854,6 +854,79 @@ var BlockClassifier = class {
|
|
|
854
854
|
}
|
|
855
855
|
};
|
|
856
856
|
|
|
857
|
+
// src/held-layer-admission.ts
|
|
858
|
+
var HORIZON_CAP = 1073741824;
|
|
859
|
+
function heldLayerAnchorHorizon(retentionBlocks, k) {
|
|
860
|
+
return retentionBlocks === void 0 || k <= 0 ? HORIZON_CAP : Math.min(HORIZON_CAP, retentionBlocks * k);
|
|
861
|
+
}
|
|
862
|
+
var HeldLayerAdmission = class {
|
|
863
|
+
#layerNames;
|
|
864
|
+
#states;
|
|
865
|
+
constructor(layers, heldLayers = [0]) {
|
|
866
|
+
const held = new Set(heldLayers);
|
|
867
|
+
this.#layerNames = new Set(layers.map((l) => l.repairTrackName));
|
|
868
|
+
this.#states = layers.filter((l) => held.has(l.layer)).map((l) => ({ layer: l.layer, repairTrackName: l.repairTrackName, total: l.rsIdOffset + l.repairSymbols }));
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* Judges one repair packet, after the 4.5 discards and the size check and
|
|
872
|
+
* before it places a block. `repairTrackName` is the subscribed repair
|
|
873
|
+
* track, never inferred from RS_ID; without it only (b) runs. A packet on a
|
|
874
|
+
* repair track the catalog does not list is `'discard'` and anchors nothing.
|
|
875
|
+
* `sourceFrontier` is the newest source SS_ID, if any: a repair more than
|
|
876
|
+
* `horizon` past it is judged without moving the anchored state.
|
|
877
|
+
*
|
|
878
|
+
* @returns undefined to admit, `'discard'`, or the fail-closed reason.
|
|
879
|
+
*/
|
|
880
|
+
admit(repairTrackName, ssStart, rsbLength, horizon, sourceFrontier) {
|
|
881
|
+
if (repairTrackName !== void 0 && !this.#layerNames.has(repairTrackName)) return "discard";
|
|
882
|
+
const farAhead = sourceFrontier !== void 0 && serial32Precedes(sourceFrontier, ssStart) && serial32Distance(sourceFrontier, ssStart) > horizon;
|
|
883
|
+
for (const state of this.#states) {
|
|
884
|
+
let code;
|
|
885
|
+
if (farAhead) {
|
|
886
|
+
if (rsbLength < state.total) {
|
|
887
|
+
if (state.layer > 0 && repairTrackName === state.repairTrackName) code = "below_own_track_total";
|
|
888
|
+
else if (state.anchor !== void 0 || state.settled) code = "below_anchored_total";
|
|
889
|
+
}
|
|
890
|
+
} else {
|
|
891
|
+
if (state.newest === void 0 || serial32Precedes(state.newest, ssStart)) state.newest = ssStart;
|
|
892
|
+
const stale = (s) => serial32Distance(s, state.newest) > horizon;
|
|
893
|
+
if (state.latestBelow !== void 0 && stale(state.latestBelow)) {
|
|
894
|
+
delete state.latestBelow;
|
|
895
|
+
delete state.latestBelowRsb;
|
|
896
|
+
}
|
|
897
|
+
if (state.anchor !== void 0 && stale(state.anchor)) state.settled = true;
|
|
898
|
+
if (rsbLength < state.total) {
|
|
899
|
+
if (state.layer > 0 && repairTrackName === state.repairTrackName) code = "below_own_track_total";
|
|
900
|
+
else if (stale(ssStart)) continue;
|
|
901
|
+
else if (state.settled || state.anchor !== void 0 && !serial32Precedes(ssStart, state.anchor)) code = "below_anchored_total";
|
|
902
|
+
else if (state.latestBelow === void 0 || serial32Precedes(state.latestBelow, ssStart)) {
|
|
903
|
+
state.latestBelow = ssStart;
|
|
904
|
+
state.latestBelowRsb = rsbLength;
|
|
905
|
+
}
|
|
906
|
+
} else if (!state.settled && !stale(ssStart)) {
|
|
907
|
+
if (state.anchor === void 0 || serial32Precedes(ssStart, state.anchor)) state.anchor = ssStart;
|
|
908
|
+
if (state.latestBelow !== void 0 && !serial32Precedes(state.latestBelow, state.anchor)) {
|
|
909
|
+
code = "below_anchored_total";
|
|
910
|
+
ssStart = state.latestBelow;
|
|
911
|
+
rsbLength = state.latestBelowRsb;
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
if (code !== void 0) {
|
|
916
|
+
return {
|
|
917
|
+
code,
|
|
918
|
+
layer: state.layer,
|
|
919
|
+
total: state.total,
|
|
920
|
+
rsbLength,
|
|
921
|
+
ssStart,
|
|
922
|
+
...state.anchor === void 0 ? {} : { anchor: state.anchor }
|
|
923
|
+
};
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
return void 0;
|
|
927
|
+
}
|
|
928
|
+
};
|
|
929
|
+
|
|
857
930
|
// src/fec-manager.ts
|
|
858
931
|
var RS_MAX_BLOCK_SYMBOLS = 255;
|
|
859
932
|
var WORKER_ERROR_LOG_CAP = 5;
|
|
@@ -1010,6 +1083,9 @@ var FECManager = class _FECManager {
|
|
|
1010
1083
|
// Receiver-local first-accepted-symbol time per block, bounded like
|
|
1011
1084
|
// #blockPathCounts (see blockAnchorAtMs).
|
|
1012
1085
|
this.#blockAnchorsMs = /* @__PURE__ */ new Map();
|
|
1086
|
+
// The receipt time of the packet being fed, when it is not now: a datagram
|
|
1087
|
+
// held on a miss and admitted later (withReceiptTime).
|
|
1088
|
+
this.#receiptAtMs = void 0;
|
|
1013
1089
|
// Exact catalog identity observed on accepted symbols for each FEC block.
|
|
1014
1090
|
// Conflicting identities collapse to null so recovery fails closed.
|
|
1015
1091
|
this.#blockCatalogTrackNames = /* @__PURE__ */ new Map();
|
|
@@ -1057,6 +1133,9 @@ var FECManager = class _FECManager {
|
|
|
1057
1133
|
// Worker recovery emits all K source symbols. Track recovery once per block
|
|
1058
1134
|
// while routing only ESI slots that were absent from the direct source path.
|
|
1059
1135
|
this.#workerRecoveredBlocks = /* @__PURE__ */ new Set();
|
|
1136
|
+
// Worker-recovered blocks a recovered packet of which admission refused,
|
|
1137
|
+
// until the decode's final symbol (7.2.7: the block is unrecovered).
|
|
1138
|
+
this.#refusedRecoveries = /* @__PURE__ */ new Set();
|
|
1060
1139
|
// How the multicast leg delivers symbols (see MulticastSymbolDelivery). The
|
|
1061
1140
|
// provider declares it per transport join; absence keeps datagram semantics.
|
|
1062
1141
|
this.#multicastSymbolDelivery = "datagram";
|
|
@@ -1195,6 +1274,11 @@ var FECManager = class _FECManager {
|
|
|
1195
1274
|
/** A stream's SBN went backwards (or jumped implausibly): the source restarted. */
|
|
1196
1275
|
this.onSourceDiscontinuity = null;
|
|
1197
1276
|
// Worker-path callbacks — async recovery and stats from FecWorkerClient.
|
|
1277
|
+
/**
|
|
1278
|
+
* A recovered source symbol. Return false when admission refused the
|
|
1279
|
+
* packet it carries (bc-provenance v2, draft-ramadan-moq-multicast-01
|
|
1280
|
+
* 7.2.7): the block is then unrecovered and stays open to its FEC deadline.
|
|
1281
|
+
*/
|
|
1198
1282
|
this.onBlockRecovered = null;
|
|
1199
1283
|
this.onFecStatsUpdate = null;
|
|
1200
1284
|
}
|
|
@@ -1247,6 +1331,7 @@ var FECManager = class _FECManager {
|
|
|
1247
1331
|
#seenSymbols;
|
|
1248
1332
|
#blockPathCounts;
|
|
1249
1333
|
#blockAnchorsMs;
|
|
1334
|
+
#receiptAtMs;
|
|
1250
1335
|
#blockCatalogTrackNames;
|
|
1251
1336
|
#startupAlignedPackets;
|
|
1252
1337
|
#startupPartialBlocks;
|
|
@@ -1259,6 +1344,7 @@ var FECManager = class _FECManager {
|
|
|
1259
1344
|
#repairDeadlines;
|
|
1260
1345
|
#repairDeadlineAtMs;
|
|
1261
1346
|
#workerRecoveredBlocks;
|
|
1347
|
+
#refusedRecoveries;
|
|
1262
1348
|
#multicastSymbolDelivery;
|
|
1263
1349
|
#orderedFrontiers;
|
|
1264
1350
|
#orderedPendingBlocks;
|
|
@@ -1398,6 +1484,7 @@ var FECManager = class _FECManager {
|
|
|
1398
1484
|
this.#completedBlocks.delete(record.key);
|
|
1399
1485
|
this.#cleanlyCompletedBlocks.delete(record.key);
|
|
1400
1486
|
this.#workerRecoveredBlocks.delete(record.key);
|
|
1487
|
+
this.#refusedRecoveries.delete(record.key);
|
|
1401
1488
|
this.#failedBlocks.delete(record.key);
|
|
1402
1489
|
this.#resolvedBlockClasses.delete(record.key);
|
|
1403
1490
|
this.#repairedBlocks.delete(record.key);
|
|
@@ -1736,7 +1823,7 @@ var FECManager = class _FECManager {
|
|
|
1736
1823
|
* remainder, so repeated source progress costs no timer operation.
|
|
1737
1824
|
*/
|
|
1738
1825
|
#armRepairDeadline(key, sbn, packetId, catalogTrackName, delayMs) {
|
|
1739
|
-
const deadlineMs =
|
|
1826
|
+
const deadlineMs = this.#notEarlierUnderReceipt(this.#receiptNow() + delayMs, this.#repairDeadlineAtMs.get(key));
|
|
1740
1827
|
this.#repairDeadlineAtMs.set(key, deadlineMs);
|
|
1741
1828
|
const armed = this.#repairDeadlines.get(key);
|
|
1742
1829
|
if (armed?.handle != null) {
|
|
@@ -1756,7 +1843,7 @@ var FECManager = class _FECManager {
|
|
|
1756
1843
|
timer.handle = null;
|
|
1757
1844
|
this.#requestRepair(sbn, packetId, catalogTrackName);
|
|
1758
1845
|
};
|
|
1759
|
-
timer.handle = setTimeout(onFire,
|
|
1846
|
+
timer.handle = setTimeout(onFire, Math.max(0, deadlineMs - performance.now()));
|
|
1760
1847
|
this.#repairDeadlines.set(key, timer);
|
|
1761
1848
|
}
|
|
1762
1849
|
#requestRepair(sbn, packetId, catalogTrackName, settledByOrder = false) {
|
|
@@ -2160,7 +2247,10 @@ var FECManager = class _FECManager {
|
|
|
2160
2247
|
}
|
|
2161
2248
|
#armBlockTimeout(sbn, packetId, catalogTrackName, delayMs) {
|
|
2162
2249
|
const key = this.#blockKey(sbn, packetId, catalogTrackName);
|
|
2163
|
-
const waitAtMs =
|
|
2250
|
+
const waitAtMs = this.#notEarlierUnderReceipt(
|
|
2251
|
+
this.#receiptNow() + Math.max(1, Math.ceil(delayMs)),
|
|
2252
|
+
this.#blockWaitDeadlinesMs.get(key)
|
|
2253
|
+
);
|
|
2164
2254
|
const holdAtMs = this.#repairHoldUntilMs.get(key);
|
|
2165
2255
|
this.#blockWaitDeadlinesMs.set(key, holdAtMs === void 0 ? waitAtMs : Math.min(waitAtMs, holdAtMs));
|
|
2166
2256
|
this.#applyBlockDeadline(key, sbn, packetId, catalogTrackName);
|
|
@@ -2549,6 +2639,7 @@ var FECManager = class _FECManager {
|
|
|
2549
2639
|
resetSet(this.#cleanlyCompletedBlocks);
|
|
2550
2640
|
resetSet(this.#repairRequestedBlocks);
|
|
2551
2641
|
resetSet(this.#workerRecoveredBlocks);
|
|
2642
|
+
resetSet(this.#refusedRecoveries);
|
|
2552
2643
|
resetSet(this.#startupAlignedPackets);
|
|
2553
2644
|
resetSet(this.#startupPartialBlocks);
|
|
2554
2645
|
resetSet(this.#startupRepairReadyPackets);
|
|
@@ -2675,6 +2766,7 @@ var FECManager = class _FECManager {
|
|
|
2675
2766
|
dropSet(this.#cleanlyCompletedBlocks);
|
|
2676
2767
|
dropSet(this.#repairRequestedBlocks);
|
|
2677
2768
|
dropSet(this.#workerRecoveredBlocks);
|
|
2769
|
+
dropSet(this.#refusedRecoveries);
|
|
2678
2770
|
dropSet(this.#startupAlignedPackets);
|
|
2679
2771
|
dropSet(this.#startupPartialBlocks);
|
|
2680
2772
|
dropSet(this.#startupRepairReadyPackets);
|
|
@@ -2788,7 +2880,9 @@ var FECManager = class _FECManager {
|
|
|
2788
2880
|
moqSymbols: 0,
|
|
2789
2881
|
complete: false
|
|
2790
2882
|
};
|
|
2791
|
-
|
|
2883
|
+
const receivedAtMs = this.#receiptNow();
|
|
2884
|
+
const anchorMs = this.#blockAnchorsMs.get(blockKey);
|
|
2885
|
+
if (anchorMs === void 0 || receivedAtMs < anchorMs) this.#blockAnchorsMs.set(blockKey, receivedAtMs);
|
|
2792
2886
|
if (source === "multicast") counts.multicastSymbols++;
|
|
2793
2887
|
else counts.moqSymbols++;
|
|
2794
2888
|
this.#blockPathCounts.set(blockKey, counts);
|
|
@@ -2949,6 +3043,18 @@ var FECManager = class _FECManager {
|
|
|
2949
3043
|
blockAnchorAtMs(sbn, packetId, catalogTrackName) {
|
|
2950
3044
|
return this.#blockAnchorsMs.get(this.#blockKey(sbn, packetId, catalogTrackName));
|
|
2951
3045
|
}
|
|
3046
|
+
/**
|
|
3047
|
+
* How long ago (ms) the oldest open block of the stream, one with an FEC
|
|
3048
|
+
* deadline, took its first accepted symbol; undefined with none open.
|
|
3049
|
+
*/
|
|
3050
|
+
oldestOpenBlockAgeMs(packetId, catalogTrackName) {
|
|
3051
|
+
let oldest = Infinity;
|
|
3052
|
+
for (const key of this.#activeBlocks.keys()) {
|
|
3053
|
+
if (!this.#belongsToStream(key, packetId, catalogTrackName)) continue;
|
|
3054
|
+
oldest = Math.min(oldest, this.#blockAnchorsMs.get(key) ?? Infinity);
|
|
3055
|
+
}
|
|
3056
|
+
return oldest === Infinity ? void 0 : performance.now() - oldest;
|
|
3057
|
+
}
|
|
2952
3058
|
/** Absolute fail deadline of a still-open block, or undefined. */
|
|
2953
3059
|
blockDeadlineAtMs(sbn, packetId, catalogTrackName) {
|
|
2954
3060
|
return this.#activeBlockDeadlinesMs.get(this.#blockKey(sbn, packetId, catalogTrackName));
|
|
@@ -3449,7 +3555,25 @@ var FECManager = class _FECManager {
|
|
|
3449
3555
|
const blockKey = this.#blockKey(meta.sbn, packetId, recoveredCatalogTrackName);
|
|
3450
3556
|
const cleanlyCompleted = this.#cleanlyCompletedBlocks.has(blockKey);
|
|
3451
3557
|
if (!cleanlyCompleted) {
|
|
3452
|
-
|
|
3558
|
+
const symbolKey = `${blockKey}:${esi}`;
|
|
3559
|
+
if (!this.#seenSymbols.has(symbolKey)) {
|
|
3560
|
+
this.#seenSymbols.add(symbolKey);
|
|
3561
|
+
const admitted = this.onBlockRecovered?.(
|
|
3562
|
+
meta.sbn,
|
|
3563
|
+
packetId,
|
|
3564
|
+
data,
|
|
3565
|
+
meta,
|
|
3566
|
+
recoveredCatalogTrackName
|
|
3567
|
+
);
|
|
3568
|
+
if (admitted === false) {
|
|
3569
|
+
this.#refusedRecoveries.add(blockKey);
|
|
3570
|
+
if (this.#refusedRecoveries.size > 1e3) dropOldest(this.#refusedRecoveries, 500);
|
|
3571
|
+
}
|
|
3572
|
+
}
|
|
3573
|
+
}
|
|
3574
|
+
const refused = esi >= meta.ssbLength - 1 && this.#refusedRecoveries.delete(blockKey);
|
|
3575
|
+
if (esi >= meta.ssbLength - 1 && !refused && !this.#completedBlocks.has(blockKey)) {
|
|
3576
|
+
if (!cleanlyCompleted && !this.#workerRecoveredBlocks.has(blockKey)) {
|
|
3453
3577
|
this.#traceLifecycle(
|
|
3454
3578
|
"recovered",
|
|
3455
3579
|
meta.sbn,
|
|
@@ -3464,19 +3588,6 @@ var FECManager = class _FECManager {
|
|
|
3464
3588
|
}
|
|
3465
3589
|
this.#noteBlockRepaired(blockKey, meta.sbn, packetId, recoveredCatalogTrackName);
|
|
3466
3590
|
}
|
|
3467
|
-
const symbolKey = `${blockKey}:${esi}`;
|
|
3468
|
-
if (!this.#seenSymbols.has(symbolKey)) {
|
|
3469
|
-
this.#seenSymbols.add(symbolKey);
|
|
3470
|
-
this.onBlockRecovered?.(
|
|
3471
|
-
meta.sbn,
|
|
3472
|
-
packetId,
|
|
3473
|
-
data,
|
|
3474
|
-
meta,
|
|
3475
|
-
recoveredCatalogTrackName
|
|
3476
|
-
);
|
|
3477
|
-
}
|
|
3478
|
-
}
|
|
3479
|
-
if (esi >= meta.ssbLength - 1 && !this.#completedBlocks.has(blockKey)) {
|
|
3480
3591
|
this.cancelBlockTimeout(meta.sbn, packetId, recoveredCatalogTrackName);
|
|
3481
3592
|
if (recoveredCatalogTrackName === void 0) {
|
|
3482
3593
|
this.onBlockComplete?.(meta.sbn, packetId);
|
|
@@ -3771,66 +3882,26 @@ var FECManager = class _FECManager {
|
|
|
3771
3882
|
const config = this.#trackConfigs.get(packetId);
|
|
3772
3883
|
const layers = config?.repairLayers;
|
|
3773
3884
|
if (layers === void 0 || layers.length === 0) return true;
|
|
3774
|
-
|
|
3775
|
-
|
|
3885
|
+
let admission = this.#heldLayerStates.get(streamKey);
|
|
3886
|
+
if (admission === void 0) {
|
|
3887
|
+
admission = new HeldLayerAdmission(layers, config.heldLayers);
|
|
3888
|
+
this.#heldLayerStates.set(streamKey, admission);
|
|
3776
3889
|
}
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
this.#
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
3792
|
-
}
|
|
3793
|
-
} else {
|
|
3794
|
-
if (state.newest === void 0 || serial32Precedes(state.newest, ssStart)) state.newest = ssStart;
|
|
3795
|
-
const stale = (s) => serial32Distance(s, state.newest) > horizon;
|
|
3796
|
-
if (state.latestBelow !== void 0 && stale(state.latestBelow)) {
|
|
3797
|
-
delete state.latestBelow;
|
|
3798
|
-
delete state.latestBelowRsb;
|
|
3799
|
-
}
|
|
3800
|
-
if (state.anchor !== void 0 && stale(state.anchor)) state.settled = true;
|
|
3801
|
-
if (rsbLength < state.total) {
|
|
3802
|
-
if (state.layer > 0 && repairTrackName === state.repairTrackName) code = "below_own_track_total";
|
|
3803
|
-
else if (stale(ssStart)) continue;
|
|
3804
|
-
else if (state.settled || state.anchor !== void 0 && !serial32Precedes(ssStart, state.anchor)) code = "below_anchored_total";
|
|
3805
|
-
else if (state.latestBelow === void 0 || serial32Precedes(state.latestBelow, ssStart)) {
|
|
3806
|
-
state.latestBelow = ssStart;
|
|
3807
|
-
state.latestBelowRsb = rsbLength;
|
|
3808
|
-
}
|
|
3809
|
-
} else if (!state.settled && !stale(ssStart)) {
|
|
3810
|
-
if (state.anchor === void 0 || serial32Precedes(ssStart, state.anchor)) state.anchor = ssStart;
|
|
3811
|
-
if (state.latestBelow !== void 0 && !serial32Precedes(state.latestBelow, state.anchor)) {
|
|
3812
|
-
code = "below_anchored_total";
|
|
3813
|
-
ssStart = state.latestBelow;
|
|
3814
|
-
rsbLength = state.latestBelowRsb;
|
|
3815
|
-
}
|
|
3816
|
-
}
|
|
3817
|
-
}
|
|
3818
|
-
if (code !== void 0) {
|
|
3819
|
-
const reason = {
|
|
3820
|
-
code,
|
|
3821
|
-
layer: state.layer,
|
|
3822
|
-
total: state.total,
|
|
3823
|
-
rsbLength,
|
|
3824
|
-
ssStart,
|
|
3825
|
-
...state.anchor === void 0 ? {} : { anchor: state.anchor }
|
|
3826
|
-
};
|
|
3827
|
-
this.#fecFailClosed.set(streamKey, reason);
|
|
3828
|
-
this.#onFecFailClosed?.({ ...reason, packetId, catalogTrackName });
|
|
3829
|
-
console.warn(
|
|
3830
|
-
`[FECManager] FEC failed closed (fec-01 6.3.9) packetId=${packetId} track=${catalogTrackName ?? "-"}: ${JSON.stringify(reason)}`
|
|
3831
|
-
);
|
|
3832
|
-
return false;
|
|
3833
|
-
}
|
|
3890
|
+
const verdict = admission.admit(
|
|
3891
|
+
repairTrackName,
|
|
3892
|
+
ssStart,
|
|
3893
|
+
rsbLength,
|
|
3894
|
+
this.#layerAnchorHorizon(packetId),
|
|
3895
|
+
this.#sourceFrontiers.get(streamKey)?.sbn
|
|
3896
|
+
);
|
|
3897
|
+
if (verdict === "discard") return false;
|
|
3898
|
+
if (verdict !== void 0) {
|
|
3899
|
+
this.#fecFailClosed.set(streamKey, verdict);
|
|
3900
|
+
this.#onFecFailClosed?.({ ...verdict, packetId, catalogTrackName });
|
|
3901
|
+
console.warn(
|
|
3902
|
+
`[FECManager] FEC failed closed (fec-01 6.3.9) packetId=${packetId} track=${catalogTrackName ?? "-"}: ${JSON.stringify(verdict)}`
|
|
3903
|
+
);
|
|
3904
|
+
return false;
|
|
3834
3905
|
}
|
|
3835
3906
|
return true;
|
|
3836
3907
|
}
|
|
@@ -3840,15 +3911,13 @@ var FECManager = class _FECManager {
|
|
|
3840
3911
|
* times K, capped at 2^30 so compared serials stay inside one half-window.
|
|
3841
3912
|
*/
|
|
3842
3913
|
#layerAnchorHorizon(packetId) {
|
|
3843
|
-
const cap = 1073741824;
|
|
3844
3914
|
let blocks;
|
|
3845
3915
|
try {
|
|
3846
3916
|
blocks = this.isoRetentionBlocksForPacket(packetId);
|
|
3847
3917
|
} catch {
|
|
3848
3918
|
blocks = void 0;
|
|
3849
3919
|
}
|
|
3850
|
-
|
|
3851
|
-
return blocks === void 0 || k <= 0 ? cap : Math.min(cap, blocks * k);
|
|
3920
|
+
return heldLayerAnchorHorizon(blocks, this.#trackConfigs.get(packetId)?.k ?? 0);
|
|
3852
3921
|
}
|
|
3853
3922
|
/**
|
|
3854
3923
|
* Report each stream whose FEC fails closed at runtime (fec-01 6.3.9), once,
|
|
@@ -4088,6 +4157,33 @@ var FECManager = class _FECManager {
|
|
|
4088
4157
|
}
|
|
4089
4158
|
queueMicrotask(() => this.#syncDecoderBlockOwners.delete(key));
|
|
4090
4159
|
}
|
|
4160
|
+
/**
|
|
4161
|
+
* Run `fn` with `receivedAtMs` (performance.now() clock) as the receipt
|
|
4162
|
+
* time of what it feeds. Within a consumer the bc-provenance profile
|
|
4163
|
+
* governs, a datagram held on a miss and admitted later keeps its receipt
|
|
4164
|
+
* time (fec-01 9): it anchors its block's ts and arms the block's
|
|
4165
|
+
* deadlines from then, never later than they are already armed.
|
|
4166
|
+
*/
|
|
4167
|
+
withReceiptTime(receivedAtMs, fn) {
|
|
4168
|
+
const outer = this.#receiptAtMs;
|
|
4169
|
+
this.#receiptAtMs = receivedAtMs;
|
|
4170
|
+
try {
|
|
4171
|
+
fn();
|
|
4172
|
+
} finally {
|
|
4173
|
+
this.#receiptAtMs = outer;
|
|
4174
|
+
}
|
|
4175
|
+
}
|
|
4176
|
+
#receiptNow() {
|
|
4177
|
+
return this.#receiptAtMs ?? performance.now();
|
|
4178
|
+
}
|
|
4179
|
+
/**
|
|
4180
|
+
* A held packet admitted late arms from its (earlier) receipt time; that
|
|
4181
|
+
* never pulls in a deadline later activity already armed. Outside a
|
|
4182
|
+
* receipt scope a re-arm replaces the deadline, as a narrower bound may.
|
|
4183
|
+
*/
|
|
4184
|
+
#notEarlierUnderReceipt(deadlineMs, armedMs) {
|
|
4185
|
+
return this.#receiptAtMs === void 0 || armedMs === void 0 ? deadlineMs : Math.max(deadlineMs, armedMs);
|
|
4186
|
+
}
|
|
4091
4187
|
/** Refresh deadlines after accepted block activity. */
|
|
4092
4188
|
noteBlockActivity(sbn, packetId, catalogTrackName, sourceProgress = false) {
|
|
4093
4189
|
if (!this.#trackConfigs.has(packetId)) return;
|
|
@@ -4266,6 +4362,7 @@ var FECManager = class _FECManager {
|
|
|
4266
4362
|
this.#cleanlyCompletedBlocks.clear();
|
|
4267
4363
|
this.#repairRequestedBlocks.clear();
|
|
4268
4364
|
this.#workerRecoveredBlocks.clear();
|
|
4365
|
+
this.#refusedRecoveries.clear();
|
|
4269
4366
|
this.#syncDecoderBlockOwners.clear();
|
|
4270
4367
|
this.#startupAlignedPackets.clear();
|
|
4271
4368
|
this.#startupPartialBlocks.clear();
|