pub struct DownloadSpec { /* private fields */ }Expand description
Specification for a download task.
Implementations§
Source§impl DownloadSpec
impl DownloadSpec
Sourcepub fn new(url: impl Into<String>) -> Self
pub fn new(url: impl Into<String>) -> Self
Create a new download specification for the given URL.
All other fields are populated with sensible defaults: 4 connections, 1 MiB pieces, 64 MiB memory budget, resume enabled, etc.
Sourcepub fn get_output_path(&self) -> Option<&Path>
pub fn get_output_path(&self) -> Option<&Path>
Returns the explicit output file path, if set.
Sourcepub fn get_output_dir(&self) -> Option<&Path>
pub fn get_output_dir(&self) -> Option<&Path>
Returns the output directory (filename will be derived from the URL or
Content-Disposition header).
Sourcepub fn get_headers(&self) -> &HashMap<String, String>
pub fn get_headers(&self) -> &HashMap<String, String>
Returns the custom HTTP headers that will be sent with every request.
Sourcepub fn get_max_connections(&self) -> u32
pub fn get_max_connections(&self) -> u32
Returns the maximum number of parallel connections.
Sourcepub fn get_connect_timeout(&self) -> Duration
pub fn get_connect_timeout(&self) -> Duration
Returns the TCP connect timeout.
Sourcepub fn get_all_proxy(&self) -> Option<&str>
pub fn get_all_proxy(&self) -> Option<&str>
Returns the proxy applied to all HTTP/HTTPS requests, if set.
Sourcepub fn get_pool_max_idle_per_host(&self) -> usize
pub fn get_pool_max_idle_per_host(&self) -> usize
Returns the maximum idle HTTP connections kept per host.
Sourcepub fn get_pool_idle_timeout(&self) -> Duration
pub fn get_pool_idle_timeout(&self) -> Duration
Returns how long idle pooled HTTP connections are retained.
Sourcepub fn get_http_proxy(&self) -> Option<&str>
pub fn get_http_proxy(&self) -> Option<&str>
Returns the proxy applied only to plain HTTP requests, if set.
Sourcepub fn get_https_proxy(&self) -> Option<&str>
pub fn get_https_proxy(&self) -> Option<&str>
Returns the proxy applied only to HTTPS requests, if set.
Sourcepub fn get_read_timeout(&self) -> Duration
pub fn get_read_timeout(&self) -> Duration
Returns the per-request read timeout.
Sourcepub fn get_memory_budget(&self) -> usize
pub fn get_memory_budget(&self) -> usize
Returns the memory budget (in bytes) for the write-back cache.
Sourcepub fn get_file_allocation(&self) -> FileAllocation
pub fn get_file_allocation(&self) -> FileAllocation
Returns the file allocation strategy.
Sourcepub fn get_channel_buffer(&self) -> usize
pub fn get_channel_buffer(&self) -> usize
Returns the internal channel buffer size.
Sourcepub fn get_resume(&self) -> bool
pub fn get_resume(&self) -> bool
Returns whether resume is enabled.
Sourcepub fn get_piece_size(&self) -> u64
pub fn get_piece_size(&self) -> u64
Returns the piece size in bytes used for multi-connection splitting.
Sourcepub fn get_min_split_size(&self) -> u64
pub fn get_min_split_size(&self) -> u64
Returns the minimum file size required before the download is split across multiple connections.
Sourcepub fn get_min_segment_size(&self) -> u64
pub fn get_min_segment_size(&self) -> u64
Returns the minimum sub-segment size used by dynamic multi-worker splitting.
Sourcepub fn get_max_retries(&self) -> u32
pub fn get_max_retries(&self) -> u32
Returns the maximum number of retry attempts per segment.
Sourcepub fn get_retry_base_delay(&self) -> Duration
pub fn get_retry_base_delay(&self) -> Duration
Returns the base delay for exponential backoff between retries.
Sourcepub fn get_retry_max_delay(&self) -> Duration
pub fn get_retry_max_delay(&self) -> Duration
Returns the maximum delay cap for exponential backoff.
Sourcepub fn get_max_retry_elapsed(&self) -> Option<Duration>
pub fn get_max_retry_elapsed(&self) -> Option<Duration>
Returns the optional total elapsed retry budget.
Sourcepub fn get_max_download_speed(&self) -> u64
pub fn get_max_download_speed(&self) -> u64
Returns the maximum download speed in bytes/sec (0 = unlimited).
Sourcepub fn get_checksum(&self) -> Option<&Checksum>
pub fn get_checksum(&self) -> Option<&Checksum>
Returns the checksum used for post-download verification, if set.
Sourcepub fn get_control_save_interval(&self) -> Duration
pub fn get_control_save_interval(&self) -> Duration
Returns the interval for periodic control-file saves.
Sourcepub fn get_autosave_sync_every(&self) -> u32
pub fn get_autosave_sync_every(&self) -> u32
Returns how many autosave ticks are coalesced into one durable save.
Sourcepub fn output_path(self, output_path: impl Into<PathBuf>) -> Self
pub fn output_path(self, output_path: impl Into<PathBuf>) -> Self
Set the explicit output file path.
Sourcepub fn output_dir(self, output_dir: impl Into<PathBuf>) -> Self
pub fn output_dir(self, output_dir: impl Into<PathBuf>) -> Self
Set the output directory. The filename will be derived automatically
from the URL or Content-Disposition response header.
Sourcepub fn headers(self, headers: HashMap<String, String>) -> Self
pub fn headers(self, headers: HashMap<String, String>) -> Self
Set custom HTTP headers to include in every request.
Sourcepub fn max_connections(self, max_connections: u32) -> Self
pub fn max_connections(self, max_connections: u32) -> Self
Set the maximum number of parallel connections (default: 4).
Sourcepub fn connect_timeout(self, connect_timeout: Duration) -> Self
pub fn connect_timeout(self, connect_timeout: Duration) -> Self
Set the TCP connect timeout (default: 30 s).
Sourcepub fn http_idle_pool(
self,
max_idle_per_host: usize,
idle_timeout: Duration,
) -> Self
pub fn http_idle_pool( self, max_idle_per_host: usize, idle_timeout: Duration, ) -> Self
Configure the experimental HTTP idle pool for this download only.
Sourcepub fn disable_http_idle_pool(self) -> Self
pub fn disable_http_idle_pool(self) -> Self
Disable HTTP idle connection reuse for this download even if the downloader enables it.
Sourcepub fn all_proxy(self, proxy: impl Into<String>) -> Self
pub fn all_proxy(self, proxy: impl Into<String>) -> Self
Set a proxy applied to all HTTP/HTTPS requests for this download only.
Sourcepub fn http_proxy(self, proxy: impl Into<String>) -> Self
pub fn http_proxy(self, proxy: impl Into<String>) -> Self
Set a proxy applied only to plain HTTP requests for this download.
Sourcepub fn https_proxy(self, proxy: impl Into<String>) -> Self
pub fn https_proxy(self, proxy: impl Into<String>) -> Self
Set a proxy applied only to HTTPS requests for this download.
Sourcepub fn read_timeout(self, read_timeout: Duration) -> Self
pub fn read_timeout(self, read_timeout: Duration) -> Self
Set the per-request read timeout (default: 60 s).
Sourcepub fn memory_budget(self, memory_budget: usize) -> Self
pub fn memory_budget(self, memory_budget: usize) -> Self
Set the memory budget in bytes for the write-back cache (default: 64 MiB).
Sourcepub fn file_allocation(self, file_allocation: FileAllocation) -> Self
pub fn file_allocation(self, file_allocation: FileAllocation) -> Self
Set the file allocation strategy (default: FileAllocation::Prealloc).
Sourcepub fn channel_buffer(self, channel_buffer: usize) -> Self
pub fn channel_buffer(self, channel_buffer: usize) -> Self
Set the internal channel buffer size (default: 64).
Sourcepub fn piece_size(self, piece_size: u64) -> Self
pub fn piece_size(self, piece_size: u64) -> Self
Set the piece size in bytes for multi-connection splitting (default: 1 MiB).
Sourcepub fn min_split_size(self, min_split_size: u64) -> Self
pub fn min_split_size(self, min_split_size: u64) -> Self
Set the minimum file size before splitting across connections (default: 10 MiB).
Sourcepub fn min_segment_size(self, min_segment_size: u64) -> Self
pub fn min_segment_size(self, min_segment_size: u64) -> Self
Set the minimum sub-segment size for dynamic multi-worker splitting.
Sourcepub fn max_retries(self, max_retries: u32) -> Self
pub fn max_retries(self, max_retries: u32) -> Self
Set the maximum retry attempts per segment (default: 5).
Sourcepub fn retry_base_delay(self, retry_base_delay: Duration) -> Self
pub fn retry_base_delay(self, retry_base_delay: Duration) -> Self
Set the base delay for exponential backoff (default: 1 s).
Sourcepub fn retry_max_delay(self, retry_max_delay: Duration) -> Self
pub fn retry_max_delay(self, retry_max_delay: Duration) -> Self
Set the maximum delay cap for exponential backoff (default: 30 s).
Sourcepub fn max_retry_elapsed(self, max_retry_elapsed: Duration) -> Self
pub fn max_retry_elapsed(self, max_retry_elapsed: Duration) -> Self
Set the total elapsed retry budget for a single request.
Sourcepub fn retry_policy(
self,
max_retries: u32,
retry_base_delay: Duration,
retry_max_delay: Duration,
) -> Self
pub fn retry_policy( self, max_retries: u32, retry_base_delay: Duration, retry_max_delay: Duration, ) -> Self
Configure the full retry policy in one call.
Sourcepub fn max_download_speed(self, max_download_speed: u64) -> Self
pub fn max_download_speed(self, max_download_speed: u64) -> Self
Set the maximum download speed in bytes/sec (default: 0 = unlimited).
Sourcepub fn checksum(self, checksum: Checksum) -> Self
pub fn checksum(self, checksum: Checksum) -> Self
Set the checksum for post-download integrity verification.
Sourcepub fn control_save_interval(self, interval: Duration) -> Self
pub fn control_save_interval(self, interval: Duration) -> Self
Set the interval for periodic control-file saves (default: 5 s).
Sourcepub fn autosave_sync_every(self, autosave_sync_every: u32) -> Self
pub fn autosave_sync_every(self, autosave_sync_every: u32) -> Self
Save a durable autosave every N autosave ticks that have unsaved progress.
Sourcepub fn validate(&self) -> Result<(), DownloadError>
pub fn validate(&self) -> Result<(), DownloadError>
Validate the configuration and return an error if any value is out of range.
Trait Implementations§
Source§impl Clone for DownloadSpec
impl Clone for DownloadSpec
Source§fn clone(&self) -> DownloadSpec
fn clone(&self) -> DownloadSpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for DownloadSpec
impl RefUnwindSafe for DownloadSpec
impl Send for DownloadSpec
impl Sync for DownloadSpec
impl Unpin for DownloadSpec
impl UnsafeUnpin for DownloadSpec
impl UnwindSafe for DownloadSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.