Crash-Isolated Codec Workers
HotPDF میتواند decode تصاویر پرریسک DCTDecode، JPXDecode و JBIG2Decode را از پردازهٔ میزبان بیرون ببرد
Isolation modes
cimAutomaticپیشفرض است و اگرHotPDFCodecWorker.exeکنار فایل اجرایی میزبان موجود باشد از آن استفاده میکند، وگرنه مسیر سازگار درونپردازهای را حفظ میکندcimRequiredوقتی worker وجود ندارد، شروع نمیشود، crash میکند، timeout میخورد، ورودی را رد میکند یا از سقف خروجی میگذرد بهصورت fail-closed شکست میخوردcimDisabledهمیشه از decoderهای درونپردازهای موجود استفاده میکند
وقتی یک worker در دسترس درخواستی را پذیرفت، cimAutomatic ورودی ناموفق یا مخرب را در پردازهٔ میزبان دوباره امتحان نمیکند
Process boundary
هر درخواست decode در یک پردازهٔ مخفی تازه اجرا میشود که به یک Windows Job Object تکپردازهای اختصاص داده شده است
- وقتی handle مربوط به Job Object بسته شود، worker و هر پردازهٔ فرزندی که تلاش برای ساخت آن شده باشد خاتمه مییابد
CodecWorkerMemoryLimitBytesسقف حافظهٔ committed هر پردازه را اعمال میکند و پیشفرضش 512 MiB استCodecWorkerTimeoutMillisecondsپیشفرض 10,000 ms است و worker هنگکرده را خاتمه میدهد- ورودی encodeشده، globalهای اختیاری JBIG2 و خروجی BGR24 از یک shared-memory mapping با نام تصادفی و یک پروتکل عرضثابتِ نسخهدار استفاده میکنند
- ظرفیت خروجی decodeشده با ابعاد اعلامشدهٔ تصویر و
DecodeBudgetBytesمحدود میشود - درخواستهای JPEG با رزولوشن پایین ابعاد دقیق هدف را حمل میکنند و هندسهٔ reduced-DCT را بدون ساختن raster کاملرزولوشن در worker برمیگردانند
Configuration
PDF.CodecIsolationMode := cimRequired;
PDF.CodecWorkerExecutable :=
'C:\Program Files\MyApp\HotPDFCodecWorker.exe';
PDF.CodecWorkerTimeoutMilliseconds := 5000;
PDF.CodecWorkerMemoryLimitBytes := 256 * 1024 * 1024;
Bitmap := PDF.ExtractLoadedImage(0);
if Bitmap = nil then
begin
PDF.GetLastCodecWorkerInfo(Info);
Writeln(Ord(Info.Status), ': ', Info.ErrorMessage);
end;
An empty CodecWorkerExecutable resolves to HotPDFCodecWorker.exe beside the current application
Telemetry
GetLastCodecWorkerInfo وضعیت، شناسهٔ پردازه، exit code، میلیثانیههای سپریشده و یک diagnostic محدود سمت میزبان را گزارش میکند
GetLastJPEGReducedDecodeInfo پس از یک درخواست JPEG کاهشیافتهٔ ایزوله، هندسهٔ مبدأ، مقیاسشده، خروجی و scanline را گزارش میکند
وضعیتهای متمایز، workerهای در دسترسنبودنی یا غیرقابلراهاندازی، timeout، crash، رد شدن decode، ناسازگاری پروتکل و سقفهای خروجی decodeشده را پوشش میدهند
Build and deployment
build-HotPDF-Codec-Worker.cmd
دستور build دو worker جدا برای Win32 و Win64 را زیر tools\CodecWorker\<platform>\Release تولید میکند؛ worker متناسب با معماری پردازهٔ میزبان را deploy کنید