PDFium Delphi Component Docs

TPdfRangeRequestScheduler trieda

Unit: PDFium
Thread-safe a prenosovo neutrálne plánovanie sparse požiadaviek na bajtové rozsahy PDF

Syntax

type TPdfRangeRequestScheduler = class ... end;

Methods

MethodDescription
CreateVytvorí prázdny plánovač s dvoma opakovaniami a bez limitu veľkosti požiadavky
DestroyUvoľní stav plánovača a jeho synchronizačný primitív
Reset(AFileSize)Zruší aktívnu transportnú prácu, začne novú generáciu, vymaže počítadlá a voliteľne vynúti logickú hranicu súboru
CancelVymaže prácu vo fronte, zneplatní generácie požiadaviek v lete a vyvolá OnCancelRequest mimo zámku plánovača
MarkAvailable(Offset, Size)Zaznamená externe dodané bajty, odstráni čakajúce prekrytie a zruší nadbytočné aktívne prenosy
EnqueueHints(Hints, Priority)Pridá chýbajúce intervaly, zachová presné hranice priority a opakovania a preruší prekrývajúce sa prenosy s nižšou prioritou
TryDequeue(out Request)Vráti požiadavku s najvyššou prioritou a najnižším offsetom s ohraničenou veľkosťou a označí ju ako v lete
CompleteRequest(Request)Označí úplnú odpoveď ako dostupnú, keď hostiteľ už uložil jej bajty
CompleteRequest(Request, BytesReceived)Potvrdí skrátený prefix odpovede a zaradí zvyšok znovu do fronty alebo ho opustí v rámci limitu opakovaní
FailRequest(Request)Zopakuje alebo opustí požiadavku v lete podľa MaxRetryCount
IsRangeAvailable(Offset, Size)Testuje, či dokončené intervaly úplne pokrývajú rozsah
DataAvailableAdaptuje vyhľadávanie dokončených rozsahov na TPdfDataAvailableEvent
CopyCompletedRangesVráti stabilný snímok zlúčených dostupných intervalov
CopyStatisticsSkopíruje počítadlá cez metódu priateľskú k C++Builder

Properties and events

MemberTypeDescription
CancelledBooleanČi bola aktívna generácia zrušená
FileSizeUInt64Logická hranica požiadaviek, alebo nula pre neohraničený samostatný plánovač
MergeGapUInt64Maximálna nepokrytá medzera vhodná na zlúčenie, keď nepresekáva žiadne dostupné bajty ani bajty v lete
MaxRequestSizeUInt64Maximálna veľkosť vrátená jedným volaním TryDequeue
MaxRetryCountIntegerPočet opakovaní po prvom transportnom pokuse
StatisticsTPdfRangeRequestStatisticsAtomický snímok pokrývajúci PendingRequestCount, InFlightRequestCount, AvailableRangeCount, bajtové počítadlá PendingBytes, InFlightBytes, CompletedBytes a TransferredBytes a celky FailedAttemptCount, RetriedRequestCount, AbandonedRequestCount, DequeuedRequestCount, CompletedRequestCount, PartialRequestCount, CancelledRequestCount a SupersededRequestCount
OnCancelRequestTPdfRangeRequestCancelEventVyžiada zrušenie jednej aktívnej transportnej operácie podľa ID požiadavky a pokusu

Scheduling rules

Example

var
  Request: TPdfRangeRequest;
begin
  while Scheduler.TryDequeue(Request) do
  begin
    try
      WriteRangeResponse(Request.Offset, Request.Size);
      Scheduler.CompleteRequest(Request);
    except
      Scheduler.FailRequest(Request);
    end;
  end;
end;

Threading and transport contract

Related types

TPdfRangeRequest, TPdfRangeRequests, TPdfRangeRequestPriority, TPdfRangeRequestStatistics, TPdfRangeRequestCancelEvent, TPdfProgressiveDocument