Skip to main content

## Module stop

Source
Expand description

Stop signalling for in-flight downloads.

TRACES: UR-055 | DR-168

Pausing and cancelling used to be database-only: `pause_download` wrote `status = 'paused'` and nothing else. No cancellation existed anywhere in the download stack — no token, no flag, no abort — so the streaming task kept running, kept writing bytes, and on finishing overwrote the row with `completed` or `failed`. The row flicked to “paused” and then undid itself, which is precisely the reported “pause does not work”.

This is the missing half: a flag per in-flight download that the worker reads between chunks. Setting it makes the worker return `Stopped` promptly and leave the `.part` file intact, which is what lets a resume pick up from where it stopped via the existing HTTP Range request.

Kept as a module-level registry rather than on `DownloadManager` because the two sides never meet: the command handler holds the manager’s lock, while the worker runs detached inside `tauri::async_runtime::spawn` with no access to Tauri state. A registry both can reach is the smallest thing that works.

## Functions§

clear
  Forget a download’s flag. Called when its task finishes, however it ended.
register
  Register `download_id` as in-flight and hand back its stop flag.
registry 🔒
  download id → its stop flag, for downloads currently in flight.
signal
  Ask an in-flight download to stop.