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

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

Gerelateerde API's