Mister Download Manager'ın parçaları nasıl bir araya geliyor.
Bileşenler
| Yol | Bileşen | Rol |
|---|---|---|
crates/engine |
mdm-engine |
HTTP(S) veya FTP(S) üzerinden tek bir dosyayı indirir: yoklama, segment planlayıcı, bağlantı çalışanları, devam durumu, ana bilgisayar başına sınırlar, hız sınırlayıcı, sağlama toplamları, proxy betikleri |
crates/app |
mdm-app |
Masaüstü uygulaması (misterdownloadmanager.exe, egui): liste, kategoriler, kuyruklar, zamanlayıcı, iletişim kutuları, tepsi, ayarlar |
crates/cli |
mdm-cli |
İlerleme göstergeli başsız indirmeler (get, resume) |
crates/mcp |
mdm-mcp |
MCP sunucusu (misterdownloadmanager-mcp): AI asistanları, çalışan uygulamanın indirmelerini otomasyon API'si aracılığıyla listeler, ekler ve kontrol eder |
crates/nmhost |
mdm-nmhost |
Tarayıcının yerel mesajlaşma ana bilgisayarı: yakalanan indirmeleri uzantıdan alır ve uygulamaya iletir |
crates/ipc |
mdm-ipc |
Tek örnekli kanal (jeton korumalı yerel soket), veri klasörü ve uygulama ile ana bilgisayar tarafından paylaşılan yakalama kuralları |
crates/tools |
mdm-tools |
yt-dlp ve ffmpeg aracılığıyla video sayfaları (ayrı programlar olarak çalışır) |
crates/crash |
mdm-crash |
Çökme ve donma raporları: izleyici süreci, işlem dışı minidump'lar, sembolize edilmiş yığınlar, raporun metni ve sürüm günlükleri (crash-reports.md) |
crates/torrent |
mdm-torrent |
librqbit aracılığıyla BitTorrent ve magnet bağlantıları |
crates/labserver |
mdm-labserver |
İstek günlüğü ve hata enjeksiyonu olan bir HTTP Range sunucusu ve testler ve karşılaştırmalar için kendi hataları olan bir FTP/FTPS sunucusu |
extension/ |
— | Chromium (MV3) ve Firefox uzantısı |
docs/ |
— | Kullanım kılavuzu ve eğitimler (Yardım onları açar), bu dosya, karşılaştırma verileri |
website/ |
— | Gelecekteki bir web sitesinin sayfaları (henüz yayınlanmadı) |
Bağımlılıklar içe doğru işaret eder: app, cli, mcp ve nmhost, engine ve ipc kullanır; motor, kullanıcı arayüzü hakkında hiçbir şey bilmez. Uygulama, motoru yalnızca olayları (ilerleme, segment tablosu anlık görüntüleri, tamamlandı, başarısız oldu) aracılığıyla görür.
Motor
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
Her segment tamamlandığında, parça dosyası beklenen boyuta göre kontrol edilir ve yerine yeniden adlandırılır; dosyanın tarihi sunucunun tarihini takip edebilir.
FTP ve FTPS (ftp.rs) aynı planlayıcı, çalışanlar ve durum üzerinden geçer: bir segment, aralıklı bir GET yerine bir kontrol oturumunda REST + RETR'tür, SIZE ve MDTM başlıklar için kullanılır ve oturumlar indirme başına havuza alınır ve segmentler arasında yeniden kullanılır.
Uygulama
Sabit piksel koordinatlarına boyanmış tek bir egui penceresi, artı iletişim kutusu başına bir anlık görüntü alanı. app.rs durumu (indirmeler, kuyruklar, ayarlar, listenin seçimi) tutar ve menü, araç çubuğu, tuş ve IPC komutlarını eylemlere dönüştürür. Her iletişim kutusu kendi modülüdür ve bir Outcome (açık, kapalı, bir değerle tamamlandı) döndürür. Yalnızca Windows çağrıları win32.rs ile sınırlıdır ve Linux ve macOS karşılıkları unix.rs ile sınırlıdır (oturumla başlayarak, tarayıcıların ana bilgisayarı, sesler, klasörde göster, çökme işleyicisi); diğer her dosya güvenli, taşınabilir Rust'tır. Yazı tipleri sistemden gelir: Windows'un Yazı Tipleri klasörü, macOS'un sistem yazı tipleri, Linux'ta fontconfig (theme.rs).
İndirme listesi ve ayarlar %APPDATA%\misterdownloadmanager\ (downloads.json) konumuna atomik olarak kaydedilir. Tarayıcı ana bilgisayarı, yakalama kuralları için aynı dosyayı okur, bu nedenle Seçenekler'deki bir değişiklik bir sonraki yakalanan indirmeye uygulanır.
Tarayıcı entegrasyonu
page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app
Uzantı, ana bilgisayara hangi dosya türlerini alacağını sorar, her indirmeyi bunlara göre kontrol eder ve tarayıcının indirmesini yalnızca uygulama kabul ettikten sonra iptal eder; aksi takdirde tarayıcı onu tutar.
Çeviriler
Kullanıcı arayüzünün gösterdiği her metin crate::i18n (craft-i18n katalogları, i18n/<locale>.tsv) aracılığıyla geçer. tools/i18n/extract.py, her metin için çevirmenlere bir not (ne olduğu, nerede gösterildiği, yer tutucuları) ile birlikte i18n/en.tsv'ü kaynaktan yeniden oluşturur.
Testler ve karşılaştırmalar
cargo testEnjekte edilmiş hatalarla (yavaş, düşen ve reddedilen bağlantılar, aralıksız sunucular, değişen dosyalar) mdm-labserver'e karşı birim testleri ve uçtan uca indirmeler çalıştırır. tools/bench yayınlanan hız karşılaştırmasını çalıştırır; ham verileri docs/bench/'tedir.
Ücretsiz, açık kaynak, reklamsız, deneme sürümü yok.
Mister Download Manager İndir