Mister Download Manager
  1. الرئيسية
  2. تعليمات
  3. البنية الداخلية

البنية الداخلية

كيف تتكامل أجزاء برنامج Mister Download Manager معا.

الصناديق (Crates)

المسار الصندوق (Crate) الدور
crates/engine mdm-engine ينزل ملفا واحدا عبر HTTP(S) أو FTP(S): فحص، مخطط تجزئة، عمال اتصال، حالة استئناف، قيود لكل مضيف، محدد سرعة، مجاميع اختبارية، نصوص وكيل
crates/app mdm-app تطبيق سطح المكتب (misterdownloadmanager.exe، egui): القائمة، الفئات، قوائم الانتظار، المجدول، مربعات الحوار، علبة النظام، الإعدادات.
crates/cli mdm-cli تنزيلات بدون واجهة رسومية مع عرض التقدم (get، resume).
crates/mcp mdm-mcp خادم MCP (misterdownloadmanager-mcp): مساعدو الذكاء الاصطناعي يسردون ويضيفون ويتحكمون في تنزيلات التطبيق قيد التشغيل عبر واجهة برمجة تطبيقات الأتمتة.
crates/nmhost mdm-nmhost مضيف الرسائل الأصلية للمتصفح: يأخذ التنزيلات الملتقطة من الإضافة ويسلمها إلى التطبيق.
crates/ipc mdm-ipc قناة المثيل الواحد (مقبس محلي محمي برمز)، مجلد البيانات، وقواعد الالتقاط المشتركة بين التطبيق والمضيف.
crates/tools mdm-tools صفحات الفيديو عبر yt-dlp و ffmpeg (تعمل كبرامج منفصلة).
crates/crash mdm-crash تقارير الأعطال والتوقف: عملية المراقبة، تفريغات الذاكرة المصغرة خارج العملية، مكدسات الرموز، نص التقرير وسجلات الإصدار (crash-reports.md).
crates/torrent mdm-torrent روابط BitTorrent والروابط المغناطيسية عبر librqbit.
crates/labserver mdm-labserver خادم HTTP Range مع سجل طلبات وحقن أخطاء، وخادم FTP/FTPS بأخطائه الخاصة، للاختبارات والمعايير.
extension/ — إضافة Chromium (MV3) و Firefox.
docs/ — دليل المستخدم والبرامج التعليمية (تفتحها تعليمات)، هذا الملف، بيانات المعايير.
website/ — صفحات موقع إلكتروني مستقبلي (لم تنشر بعد)

تتجه التبعيات إلى الداخل: app، cli، mcp و nmhost تستخدم engine و ipc؛ المحرك لا يعرف شيئا عن واجهة المستخدم. يرى التطبيق المحرك فقط من خلال أحداثه (التقدم، لقطات جدول التجزئة، الانتهاء، الفشل).

المحرك

Download
 ├─ probe()              size, resumable?, validators (ETag / Last-Modified), file name
 ├─ Planner (pure)       segment table: when a connection is free, the largest remaining
 │                       part is split in half (planner.rs, tested by random simulation)
 ├─ Worker × N           one HTTP/1.1 connection each, reused across segments; slow ones
 │                       are dropped and their part re-split
 │    └─ writes at its offset into <name>.mdm.part (created sparse)
 ├─ HostLimits           learns how many connections each server accepts
 ├─ Limiter (shared)     per-download and global token buckets
 ├─ State                segment table saved atomically (craft-atomic) for crash-safe resume
 └─ events → channel     Progress, Done, Failed

عند الانتهاء من كل جزء، يتم فحص الملف الجزئي مقابل الحجم المتوقع وإعادة تسميته إلى مكانه؛ يمكن أن يتبع تاريخ الملف تاريخ الخادم.

يمر FTP و FTPS (ftp.rs) عبر نفس المخطط والعمال والحالة: التجزئة هي REST + RETR على جلسة تحكم بدلا من GET ذات النطاق، SIZE و MDTM تحل محل الرؤوس، ويتم تجميع الجلسات لكل تنزيل وإعادة استخدامها بين التجزئات.

التطبيق

نافذة egui واحدة مرسومة بإحداثيات بكسل ثابتة، بالإضافة إلى منفذ عرض فوري واحد لكل مربع حوار. app.rs يحتفظ بالحالة (التنزيلات، قوائم الانتظار، الإعدادات، تحديد القائمة) ويحول أوامر القائمة وشريط الأدوات والمفاتيح و IPC إلى إجراءات. كل مربع حوار هو وحدة خاصة به ويعيد Outcome (مفتوح، مغلق، منجز بقيمة). تقتصر المكالمات الخاصة بنظام Windows على win32.rs ونظيراتها في Linux و macOS على unix.rs (بدءا من الجلسة، مضيف المتصفحات، الأصوات، العرض في المجلد، معالج الأعطال)؛ كل ملف آخر هو Rust آمن ومحمول. تأتي الخطوط من النظام: مجلد Fonts في Windows، خطوط النظام في macOS، fontconfig في Linux (theme.rs).

يتم حفظ قائمة التنزيلات والإعدادات بشكل ذري في %APPDATA%\misterdownloadmanager\ (downloads.json). يقرأ مضيف المتصفح نفس الملف لقواعد الالتقاط، لذا فإن أي تغيير في الخيارات ينطبق على التنزيل الملتقط التالي.

تكامل المتصفح

page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app

تطلب الإضافة من المضيف أنواع الملفات التي يجب أخذها، وتفحص كل تنزيل مقابلها، وتلغي تنزيل المتصفح فقط بعد أن يقبله التطبيق؛ وإلا فإن المتصفح يحتفظ به.

الترجمات

يمر كل نص تعرضه واجهة المستخدم عبر crate::i18n (كتالوجات craft-i18n، i18n/<locale>.tsv). tools/i18n/extract.py يعيد بناء i18n/en.tsv من المصدر، مع ملاحظة للمترجمين على كل نص (ما هو، أين يظهر، عناصره النائبة).

الاختبارات والمعايير

cargo testيشغل اختبارات الوحدات والتنزيلات الشاملة مقابل mdm-labserver مع أخطاء محقونة (اتصالات بطيئة، متقطعة ومرفوضة، خوادم بدون نطاقات، ملفات متغيرة). tools/bench يشغل مقارنة السرعة المنشورة؛ بياناتها الخام موجودة في docs/bench/.

مجاني، مفتوح المصدر، بدون إعلانات، بدون فترة تجريبية.

تنزيل Mister Download Manager