Member Junction
    Preparing search index...

    Interface IRealtimeRecordingLedger

    The recording ledger: guarded writes and the reads assembly needs.

    interface IRealtimeRecordingLedger {
        ClaimAssembly(sessionID: string, staleBefore: Date): Promise<number>;
        CountShardsBelow(sessionID: string, indexBelow: number): Promise<number>;
        DeleteShardsBelow(sessionID: string, indexBelow: number): Promise<number>;
        FinishAssembly(input: FinishAssemblyInput): Promise<boolean>;
        LoadShardMetadata(sessionID: string): Promise<LedgerShardMetadata[]>;
        LoadShards(sessionID: string): Promise<LedgerShard[]>;
        PurgeClosedBefore(closedBefore: Date, maxRows: number): Promise<number>;
        RecordShard(input: RecordShardInput): Promise<RecordShardResult>;
        StampAssemblyGaps(
            sessionID: string,
            version: number,
            gaps: RecordingGap[],
        ): Promise<boolean>;
        StampTerminal(
            sessionID: string,
            expectedShards: number,
            capturedSamples: number,
        ): Promise<{ Outcome: "Stamped" | "Ignored"; RecordingStatus: string }>;
    }

    Implemented by

    Index

    Methods

    • Atomically claims assembly (from Pending/Partial, or from an Assembling claim last touched before staleBefore). Returns the new assembly version, or null when another caller holds it.

      Parameters

      • sessionID: string
      • staleBefore: Date

      Returns Promise<number>

    • Deletes shards with an index below indexBelow (the ones a Complete recording holds). Returns rows deleted.

      Parameters

      • sessionID: string
      • indexBelow: number

      Returns Promise<number>

    • Stores gaps as the session's RecordingGaps while keeping the claim (Assembling), fenced on version like FinishAssembly. Called just before an assembly overwrites recording.wav, so the stored gaps cover every silent range of the object even when the finish never happens. Returns false when a newer claim superseded this one.

      Parameters

      Returns Promise<boolean>

    • Stamps the terminal signal's counts; a lower terminal than the stored one is Ignored.

      Parameters

      • sessionID: string
      • expectedShards: number
      • capturedSamples: number

      Returns Promise<{ Outcome: "Stamped" | "Ignored"; RecordingStatus: string }>