Ir al contenido

Arquitectura

ATorrent comparte el uso de un motor BitTorrent especializado, pero adapta la interfaz, la persistencia y el ciclo de vida a cada sistema.

  • Interfaz: Jetpack Compose y ViewModel.
  • Persistencia: Room, repositorio y datos de reanudación.
  • Motor: libtorrent a través de libtorrent4j.
  • Transferencias: Foreground Service y notificación persistente.

HomeViewModel coordina el estado de la pantalla y las acciones del usuario. El repositorio centraliza el acceso a Room. El servicio permite mantener la sesión de transferencia cuando la interfaz deja de estar en primer plano.

La aplicación utiliza SwiftUI y MVVM, con paquetes de Swift Package Manager separados por responsabilidad:

Módulo Responsabilidad
TorrentCore Modelos, contratos y lógica del dominio
TorrentPersistence Conservación del estado de las transferencias
TorrentEngineBridge Integración entre Swift y libtorrent
Aplicación SwiftUI Interfaz y coordinación de las acciones

El motor utiliza libtorrent-rasterbar 2.0.12, Boost y OpenSSL 3.

El motor libtorrent 2.0.12 se empaqueta para dispositivos (iphoneos) y simuladores (iphonesimulator). Un bridge C/C++ y un XCFramework permiten consumirlo desde Swift.

La concurrencia de Swift aísla la gestión de la sesión. SwiftData y los datos de reanudación conservan las transferencias. Los archivos permanecen dentro del sandbox de la app.

Versión en desarrollo.