Arquitectura
Las piezas de TurboDL y cómo funciona el motor.
Las piezas
motor compartido biblioteca Rust, sin interfaz
turbodl aplicación egui
turbodl-cli línea de comandos
turbodl-mcp servidor MCP (rmcp)
extensiones Chrome y Firefox
perfiles perfil por defecto y JSON Schema
El motor
| Módulo | Función |
|---|---|
engine/probe | Primera petición: tamaño, rangos de bytes, nombre, ETag; reintentos de red |
engine/plan | Segmentos restaurados desde el estado o divididos desde cero |
engine/worker | Una conexión por segmento, escrituras agrupadas (256 KiB), reintentos con esperas crecientes |
engine/splitter | División inicial y nueva división del segmento restante más grande |
engine/finish | Destino, estado guardado cada 2 s, finalización, historial |
resume | Archivo .part.turbodl sin secretos, escrito de forma atómica |
request / auth | Petición, cabeceras ${VAR}, cookies Netscape, Basic |
resolvers | Google Drive |
stats | Historial history.jsonl, agregados y observaciones |
Las interfaces no reciben ningún mensaje por bloque recibido: leen una instantánea a su ritmo, lo que mantiene la pantalla fluida sea cual sea la velocidad.
La aplicación de escritorio
| Módulo | Función |
|---|---|
queue | Lista de descargas, cola de espera, guardado en downloads.json |
bridge | Instancia única y host nativo para las extensiones |
i18n | Textos de la interfaz en inglés, francés y español; el inglés sirve de respaldo |
theme + icons | Temas claro/oscuro teñidos por el color de acento, fuente de iconos Phosphor |
update | Búsqueda de versión, descarga del paquete con el motor, suma de comprobación, sustitución de archivos con vuelta atrás |
ui | Ventanas y diálogos |
Decisiones técnicas
- Rust: sin recolector de basura ni bloqueo global, un programa nativo por plataforma.
- egui: interfaz inmediata dibujada por la GPU, sin navegador integrado.
- rustls: TLS sin depender de OpenSSL.