Hoe de onderdelen van Mister Download Manager samenwerken.
Crates
| Pad | Crate | Rol |
|---|---|---|
crates/engine |
mdm-engine |
Downloadt één bestand via HTTP(S) of FTP(S): probe, segmentplanner, verbindingswerkers, hervattingsstatus, limieten per host, snelheidsbegrenzer, checksums, proxyscripts |
crates/app |
mdm-app |
De desktop-app (misterdownloadmanager.exe, egui): lijst, categorieën, wachtrijen, planner, dialoogvensters, systeemvak, instellingen |
crates/cli |
mdm-cli |
Headless downloads met voortgang (get, resume) |
crates/mcp |
mdm-mcp |
De MCP-server (misterdownloadmanager-mcp): AI-assistenten tonen, voegen toe en beheren de downloads van de actieve app via de automatiserings-API |
crates/nmhost |
mdm-nmhost |
De native messaging host van de browser: neemt vastgelegde downloads van de extensie over en geeft ze door aan de app |
crates/ipc |
mdm-ipc |
Het single-instance kanaal (een met token beveiligde lokale socket), de datafolder en de vastlegregels die door de app en de host worden gedeeld |
crates/tools |
mdm-tools |
Videopagina's via yt-dlp en ffmpeg (uitgevoerd als aparte programma's) |
crates/crash |
mdm-crash |
Crash- en vastlooprapporten: het monitorproces, out-of-process minidumps, gesymboliseerde stacks, de tekst van het rapport en de releaselogboeken (crash-reports.md) |
crates/torrent |
mdm-torrent |
BitTorrent en magneetlinks via librqbit |
crates/labserver |
mdm-labserver |
Een HTTP Range-server met een verzoeklogboek en foutinjectie, en een FTP/FTPS-server met eigen fouten, voor tests en benchmarks |
extension/ |
— | De Chromium (MV3) en Firefox extensie |
docs/ |
— | De gebruikershandleiding en tutorials (Help opent ze), dit bestand, de benchmarkdata |
website/ |
— | De pagina's van een toekomstige website (nog niet gepubliceerd) |
Afhankelijkheden wijzen naar binnen: app, cli, mcp en nmhost gebruiken engine en ipc; de engine weet niets van de UI. De app ziet de engine alleen via zijn gebeurtenissen (voortgang, momentopnamen van de segmenttabel, voltooid, mislukt).
Engine
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
Wanneer elk segment klaar is, wordt het deelbestand gecontroleerd op de verwachte grootte en op zijn plaats hernoemd; de datum van het bestand kan die van de server volgen.
FTP en FTPS (ftp.rs) gaan via dezelfde planner, werkers en status: een segment is REST + RETR op een controlesessie in plaats van een bereikde GET, SIZE en MDTM staan voor de headers, en sessies worden per download gepoold en hergebruikt tussen segmenten.
App
Eén egui-venster getekend op vaste pixelcoördinaten, plus één directe viewport per dialoogvenster. app.rs bevat de status (downloads, wachtrijen, instellingen, de selectie van de lijst) en zet menu-, werkbalk-, toets- en IPC-opdrachten om in acties. Elk dialoogvenster is een eigen module en retourneert een Outcome (open, gesloten, voltooid met een waarde). Windows-specifieke aanroepen zijn beperkt tot win32.rs en hun Linux- en macOS-tegenhangers tot unix.rs (beginnend met de sessie, de browserhost, geluiden, tonen in map, de crashhandler); elk ander bestand is veilige, draagbare Rust. Lettertypen komen van het systeem: Windows' lettertypefolder, macOS's systeemlettertypen, fontconfig op Linux (theme.rs).
De downloadlijst en instellingen worden atomisch opgeslagen in %APPDATA%\misterdownloadmanager\ (downloads.json). De browserhost leest hetzelfde bestand voor de vastlegregels, dus een wijziging in Opties is van toepassing op de volgende vastgelegde download.
Browserintegratie
page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app
De extensie vraagt de host welke bestandstypen moeten worden overgenomen, controleert elke download hierop en annuleert de download van de browser pas nadat de app deze heeft geaccepteerd; anders behoudt de browser deze.
Vertalingen
Elke tekst die de UI toont, gaat via crate::i18n (craft-i18n catalogi, i18n/<locale>.tsv). tools/i18n/extract.py herbouwt i18n/en.tsv vanuit de bron, met een notitie voor vertalers bij elke tekst (wat het is, waar het wordt getoond, de placeholders).
Tests en benchmarks
cargo testvoert unit-tests en end-to-end downloads uit tegen mdm-labserver met geïnjecteerde fouten (trage, verbroken en geweigerde verbindingen, servers zonder bereiken, veranderende bestanden). tools/bench voert de gepubliceerde snelheidsvergelijking uit; de ruwe data staat in docs/bench/.
Gratis, open source, geen advertenties, geen proefversie.
Mister Download Manager downloaden