Bagaimana bagian-bagian Mister Download Manager saling terhubung.
Crates
| Jalur | Crate | Peran |
|---|---|---|
crates/engine |
mdm-engine |
Mengunduh satu berkas melalui HTTP(S) atau FTP(S): probe, perencana segmen, pekerja koneksi, status lanjutkan, batas per host, pembatas kecepatan, checksum, skrip proxy |
crates/app |
mdm-app |
Aplikasi desktop (misterdownloadmanager.exe, egui): daftar, kategori, antrean, penjadwal, dialog, baki, pengaturan |
crates/cli |
mdm-cli |
Unduhan tanpa kepala dengan progres (get, resume) |
crates/mcp |
mdm-mcp |
Server MCP (misterdownloadmanager-mcp): daftar asisten AI, menambah dan mengontrol unduhan aplikasi yang sedang berjalan melalui API otomatisasi |
crates/nmhost |
mdm-nmhost |
Host pesan asli peramban: mengambil unduhan yang ditangkap dari ekstensi dan menyerahkannya ke aplikasi |
crates/ipc |
mdm-ipc |
Saluran satu instans (soket lokal yang dilindungi token), folder data, dan aturan penangkapan yang dibagikan oleh aplikasi dan host |
crates/tools |
mdm-tools |
Halaman video melalui yt-dlp dan ffmpeg (dijalankan sebagai program terpisah) |
crates/crash |
mdm-crash |
Laporan kerusakan dan macet: proses monitor, minidump di luar proses, tumpukan bersimbol, teks laporan dan log rilis (crash-reports.md) |
crates/torrent |
mdm-torrent |
BitTorrent dan tautan magnet melalui librqbit |
crates/labserver |
mdm-labserver |
Server HTTP Range dengan log permintaan dan injeksi kesalahan, dan server FTP/FTPS dengan kesalahannya sendiri, untuk pengujian dan tolok ukur |
extension/ |
— | Ekstensi Chromium (MV3) dan Firefox |
docs/ |
— | Panduan pengguna dan tutorial (Bantuan membukanya), berkas ini, data tolok ukur |
website/ |
— | Halaman situs web masa depan (belum diterbitkan) |
Ketergantungan mengarah ke dalam: app, cli, mcp dan nmhost menggunakan engine dan ipc; mesin tidak tahu apa-apa tentang UI. Aplikasi hanya melihat mesin melalui peristiwa-peristiwanya (progres, cuplikan tabel segmen, selesai, gagal).
Mesin
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
Ketika setiap segmen selesai, berkas bagian diperiksa terhadap ukuran yang diharapkan dan diganti namanya ke tempatnya; tanggal berkas dapat mengikuti tanggal server.
FTP dan FTPS (ftp.rs) melalui perencana, pekerja, dan status yang sama: segmen adalah REST + RETR pada sesi kontrol alih-alih GET, SIZE dan MDTM yang berjangka menggantikan header, dan sesi dikumpulkan per unduhan dan digunakan kembali di antara segmen.
Aplikasi
Satu jendela egui yang dilukis ke koordinat piksel tetap, ditambah satu viewport langsung per dialog. app.rs menyimpan status (unduhan, antrean, pengaturan, pilihan daftar) dan mengubah perintah menu, bilah alat, kunci, dan IPC menjadi tindakan. Setiap dialog adalah modulnya sendiri dan mengembalikan Outcome (terbuka, tertutup, selesai dengan nilai). Panggilan khusus Windows terbatas pada win32.rs dan rekan-rekan Linux dan macOS-nya pada unix.rs (dimulai dengan sesi, host peramban, suara, tampilkan di folder, penangan kerusakan); setiap berkas lain aman, Rust portabel. Font berasal dari sistem: folder Font Windows, font sistem macOS, fontconfig di Linux (theme.rs).
Daftar unduhan dan pengaturan disimpan secara atomik ke %APPDATA%\misterdownloadmanager\ (downloads.json). Host peramban membaca berkas yang sama untuk aturan penangkapan, sehingga perubahan di Opsi berlaku untuk unduhan yang ditangkap berikutnya.
Integrasi browser
page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app
Ekstensi menanyakan host jenis berkas mana yang akan diambil, memeriksa setiap unduhan terhadapnya, dan membatalkan unduhan peramban hanya setelah aplikasi menerimanya; jika tidak, peramban tetap menyimpannya.
Terjemahan
Setiap teks yang ditampilkan UI melalui crate::i18n (katalog craft-i18n, i18n/<locale>.tsv). tools/i18n/extract.py membangun kembali i18n/en.tsv dari sumber, dengan catatan untuk penerjemah pada setiap teks (apa itu, di mana ditampilkan, placeholder-nya).
Pengujian dan tolok ukur
cargo testmenjalankan pengujian unit dan unduhan ujung-ke-ujung terhadap mdm-labserver dengan kesalahan yang disuntikkan (koneksi lambat, terputus, dan ditolak, server tanpa rentang, berkas yang berubah). tools/bench menjalankan perbandingan kecepatan yang diterbitkan; data mentahnya ada di docs/bench/.
Gratis, sumber terbuka, tanpa iklan, tanpa uji coba.
Unduh Mister Download Manager