type TPdfRangeRequestScheduler = class ... end;
| Method | Description |
|---|---|
Create | Vytvorí prázdny plánovač s dvoma opakovaniami a bez limitu veľkosti požiadavky |
Destroy | Uvoľ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 |
Cancel | Vymaž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 |
DataAvailable | Adaptuje vyhľadávanie dokončených rozsahov na TPdfDataAvailableEvent |
CopyCompletedRanges | Vráti stabilný snímok zlúčených dostupných intervalov |
CopyStatistics | Skopíruje počítadlá cez metódu priateľskú k C++Builder |
| Member | Type | Description |
|---|---|---|
Cancelled | Boolean | Či bola aktívna generácia zrušená |
FileSize | UInt64 | Logická hranica požiadaviek, alebo nula pre neohraničený samostatný plánovač |
MergeGap | UInt64 | Maximálna nepokrytá medzera vhodná na zlúčenie, keď nepresekáva žiadne dostupné bajty ani bajty v lete |
MaxRequestSize | UInt64 | Maximálna veľkosť vrátená jedným volaním TryDequeue |
MaxRetryCount | Integer | Počet opakovaní po prvom transportnom pokuse |
Statistics | TPdfRangeRequestStatistics | Atomický 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 |
OnCancelRequest | TPdfRangeRequestCancelEvent | Vyžiada zrušenie jednej aktívnej transportnej operácie podľa ID požiadavky a pokusu |
rrpImmediate sa vyberie z fronty pred rrpNormal a potom rrpBackgroundMergeGap, čo bráni duplicitnému prenosuAttempt s číslovaním od jednejvar
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;
CompleteRequestTStream.Position zostáva synchronizačnou zodpovednosťou hostiteľa; použite poziciované I/O alebo externý zámok streamuOnCancelRequest beží mimo interného zámku pre zrušenie relácie, prerušenie z priority a zrušenie nadbytočných prenosovTPdfRangeRequest,
TPdfRangeRequests,
TPdfRangeRequestPriority,
TPdfRangeRequestStatistics,
TPdfRangeRequestCancelEvent,
TPdfProgressiveDocument