Deterministische afspeelherhaling
THotPDF.DeterministicReplayLog legt externe beslissingen vast die een bewerking anders kunnen laten gedragen over uitvoeringen heen, en substitueert vervolgens de opgenomen resultaten tijdens het afspelen
Vastgelegde beslissingen
- Annulering-checkpoints registreren de bewerkingsnaam en of annulering werd aangevraagd
- Progressieve random-access-sondes registreren de exacte byteoffset, byteaantal en beschikbaarheidsresultaat
- Booleaanse en 64-bit-integerserver-callbackhelpers registreren een stabiele callback-naam, twee door de aanroeper gedefinieerde contextwaarden en het geretourneerde resultaat
- Annotatiefiltering en tegels-render-annulering gebruiken de afspeelherhalinglog automatisch bij het opnemen of afspelen via
THotPDF
Opnemen en afspelen
var
ReplayJSON: AnsiString;
begin
PDF.DeterministicReplayLog.BeginRecording;
PDF.ReadProgressiveLinearizedFirstPageSection(Source, Output, Info);
ReplayJSON := PDF.DeterministicReplayLog.ExportJSON;
PDF.DeterministicReplayLog.ImportJSON(ReplayJSON);
PDF.ReadProgressiveLinearizedFirstPageSection(Source, Output, Info);
if not PDF.DeterministicReplayLog.CompleteReplay then
raise Exception.Create(PDF.DeterministicReplayLog.LastDiagnostic);
end;
Ordening en validatie
Elke gebeurtenis draagt een monotoon sequentienummer, gebeurtenissoort, naam, twee ondertekende 64-bit-argumenten en een getypeerd resultaat
Afspeelherhaling verbruikt gebeurtenissen in volgorde en valideert hun volledige handtekening vóór het retourneren van het opgenomen resultaat; strikte modus genereert EHPDFDeterministicReplayMismatch bij uitputting of divergentie, terwijl niet-strikte modus een mismatchtelling en -diagnostiek behoudt en het waargenomen resultaat gebruikt
CompleteReplay slaagt alleen nadat elke behouden gebeurtenis is verbruikt zonder mismatches of verloren opnamegebeurtenissen
Grenzen en prestaties
EventLimit is standaard 100.000 gebeurtenissen, DroppedEventCount rapporteert overloop en gebeurtenisopslag groeit geometrisch zodat de append-kosten een geamortiseerde constante tijdsduur blijven
Het JSON-schema is hotpdf-deterministic-replay-v1; 64-bit-argumenten en integerresultaten worden gecodeerd als decimale strings om exacte waarden te behouden over JSON-implementaties heen