Mister Download Manager-এর বিভিন্ন অংশ কীভাবে একসাথে কাজ করে।
ক্রেটস
| পথ | ক্রেট | ভূমিকা |
|---|---|---|
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): AI অ্যাসিস্ট্যান্টরা অটোমেশন API এর মাধ্যমে চলমান অ্যাপের ডাউনলোডগুলি তালিকাভুক্ত করে, যোগ করে এবং নিয়ন্ত্রণ করে |
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 |
librqbit এর মাধ্যমে BitTorrent এবং ম্যাগনেট লিঙ্ক |
crates/labserver |
mdm-labserver |
একটি HTTP রেঞ্জ সার্ভার যার একটি অনুরোধ লগ এবং ফল্ট ইনজেকশন রয়েছে, এবং একটি FTP/FTPS সার্ভার যার নিজস্ব ফল্ট রয়েছে, পরীক্ষা এবং বেঞ্চমার্কের জন্য |
extension/ |
— | Chromium (MV3) এবং Firefox এক্সটেনশন |
docs/ |
— | ব্যবহারকারীর নির্দেশিকা এবং টিউটোরিয়াল (সহায়তা সেগুলিকে খোলে), এই ফাইল, বেঞ্চমার্ক ডেটা |
website/ |
— | একটি ভবিষ্যতের ওয়েবসাইটের পৃষ্ঠাগুলি (এখনও প্রকাশিত হয়নি) |
নির্ভরতাগুলি ভিতরের দিকে নির্দেশ করে: app, cli, mcp এবং nmhost engine এবং ipc ব্যবহার করে; ইঞ্জিন UI সম্পর্কে কিছুই জানে না। অ্যাপ ইঞ্জিনকে শুধুমাত্র এর ইভেন্টগুলির মাধ্যমে দেখে (অগ্রগতি, সেগমেন্ট টেবিলের স্ন্যাপশট, শেষ হয়েছে, ব্যর্থ হয়েছে)।
ইঞ্জিন
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। ফন্টগুলি সিস্টেম থেকে আসে: Windows-এর Fonts ফোল্ডার, macOS-এর সিস্টেম ফন্ট, Linux-এ fontconfig (theme.rs)।
ডাউনলোড তালিকা এবং সেটিংস পারমাণবিকভাবে %APPDATA%\misterdownloadmanager\ (downloads.json) এ সংরক্ষণ করা হয়। ব্রাউজার হোস্ট ক্যাপচার নিয়মগুলির জন্য একই ফাইল পড়ে, তাই বিকল্পগুলিতে একটি পরিবর্তন পরবর্তী ক্যাপচার করা ডাউনলোডে প্রযোজ্য হয়।
ব্রাউজার ইন্টিগ্রেশন
page ──► extension ──native messaging──► mdm-nmhost ──ipc──► app
এক্সটেনশন হোস্টকে জিজ্ঞাসা করে কোন ফাইল প্রকারগুলি নিতে হবে, সেগুলির বিরুদ্ধে প্রতিটি ডাউনলোড পরীক্ষা করে এবং অ্যাপ এটি গ্রহণ করার পরেই ব্রাউজারের ডাউনলোড বাতিল করে; অন্যথায় ব্রাউজার এটি রাখে।
অনুবাদ
UI যে প্রতিটি পাঠ্য দেখায় তা crate::i18n (craft-i18n ক্যাটালগ, i18n/<locale>.tsv) এর মাধ্যমে যায়। tools/i18n/extract.py উৎস থেকে i18n/en.tsv পুনর্নির্মাণ করে, প্রতিটি পাঠ্যের উপর অনুবাদকদের জন্য একটি নোট সহ (এটি কী, এটি কোথায় দেখায়, এর প্লেসহোল্ডারগুলি)।
পরীক্ষা এবং বেঞ্চমার্ক
cargo testmdm-labserver এর বিরুদ্ধে ইউনিট পরীক্ষা এবং এন্ড-টু-এন্ড ডাউনলোড চালায় ইনজেক্টেড ফল্ট সহ (ধীর, বাদ পড়া এবং প্রত্যাখ্যান করা সংযোগ, রেঞ্জ ছাড়া সার্ভার, ফাইল পরিবর্তন)। tools/bench প্রকাশিত গতি তুলনা চালায়; এর কাঁচা ডেটা docs/bench/ এ রয়েছে।
বিনামূল্যে, ওপেন সোর্স, কোনো বিজ্ঞাপন নেই, কোনো ট্রায়াল নেই।
Mister Download Manager ডাউনলোড করুন