type TPdfRangeRequestScheduler = class ... end;
| Method | Description |
|---|---|
Create | יוצר מתזמן ריק עם שני ניסיונות חזרה וללא הגבלת גודל בקשה |
Destroy | משחרר את מצב המתזמן ואת פרימיטיב הסנכרון שלו |
Reset(AFileSize) | מבטל עבודת תעבורה פעילה, פותח דור חדש, מאפס מונים, ואוכף באופן אופציונלי חסם גודל קובץ לוגי |
Cancel | מנקה עבודה שהמתינה בתור, מבטל את תוקף דורות של בקשות בעיצומן, ומעלה את OnCancelRequest מחוץ לנעילת המתזמן |
MarkAvailable(Offset, Size) | רושם בתים שסופקו חיצונית, מסיר חפיפה ממתינה, ומבטל העברות פעילות מיותרות |
EnqueueHints(Hints, Priority) | מוסיף מרווחים חסרים, שומר על גבולות עדיפות וניסיון חזרה מדויקים, ודוחק העברות חופפות בעדיפות נמוכה יותר |
TryDequeue(out Request) | מחזיר את הבקשה החסומה בעלת העדיפות הגבוהה ביותר וה-offset הנמוך ביותר ומסמן אותה כבעיצומה |
CompleteRequest(Request) | מסמן תגובה מלאה כזמינה לאחר שהמארח אחסן את בתיה |
CompleteRequest(Request, BytesReceived) | מחייב קידומת תגובה חלקית ומחזיר את היתרה לתור או מוותר עליה בגבולות הניסיונות החוזרים |
FailRequest(Request) | חוזר או מוותר על בקשה בעיצומה בגבולות MaxRetryCount |
IsRangeAvailable(Offset, Size) | בודק אם המרווחים שהושלמו מכסים טווח במלואו |
DataAvailable | מתאים חיפוש טווחים שהושלמו אל TPdfDataAvailableEvent |
CopyCompletedRanges | מחזיר תמונת מצב יציבה של מרווחים זמינים ממוזגים |
CopyStatistics | מעתיק מונים דרך שיטה ידידותית ל-C++Builder |
| Member | Type | Description |
|---|---|---|
Cancelled | Boolean | האם הדור הפעיל בוטל |
FileSize | UInt64 | חסם בקשות לוגי, או אפס עבור מתזמן עצמאי ללא חסם |
MergeGap | UInt64 | מרווח לא מכוסה מרבי שזכאי למיזוג כאשר הוא אינו חוצה בתים זמינים או בעיצומם |
MaxRequestSize | UInt64 | הגודל המרבי שמוחזר בקריאת TryDequeue אחת |
MaxRetryCount | Integer | מספר הניסיונות החוזרים אחרי ניסיון התעבורה הראשוני |
Statistics | TPdfRangeRequestStatistics | תמונת מצב אטומית הכוללת את PendingRequestCount, InFlightRequestCount, AvailableRangeCount, מוני הבתים PendingBytes, InFlightBytes, CompletedBytes ו-TransferredBytes, ואת סיכומי FailedAttemptCount, RetriedRequestCount, AbandonedRequestCount, DequeuedRequestCount, CompletedRequestCount, PartialRequestCount, CancelledRequestCount ו-SupersededRequestCount |
OnCancelRequest | TPdfRangeRequestCancelEvent | מבקש ביטול של פעולת תעבורה פעילה אחת לפי מזהה בקשה וניסיון |
rrpImmediate נשלף מהתור לפני rrpNormal, ואחריו rrpBackgroundMergeGap לעולם אינו גושר בין בתים שהושלמו לבין בתים בעיצומם, וכך מונע העברה כפולהAttempt מוגדל, במספור החל מ-1var
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 משותף נשאר באחריות הסנכרון של המארח; השתמשו ב-I/O ממוקם או בנעילת זרם חיצוניתOnCancelRequest רץ מחוץ לנעילה הפנימית עבור ביטול סשן, דחיקת עדיפות וביטול העברות מיותרותTPdfRangeRequest,
TPdfRangeRequests,
TPdfRangeRequestPriority,
TPdfRangeRequestStatistics,
TPdfRangeRequestCancelEvent,
TPdfProgressiveDocument