use crate::read_resume_policy::{ReadResumePolicy, Recommended};
use std::sync::Arc;
const MIB: usize = 1024 * 1024_usize;
const RESUMABLE_UPLOAD_THRESHOLD: usize = 16 * MIB;
const RESUMABLE_UPLOAD_TARGET_CHUNK: usize = 8 * MIB;
#[derive(Clone, Debug)]
pub struct CommonOptions {
pub read_resume_policy: Arc<dyn ReadResumePolicy>,
pub resumable_upload_threshold: usize,
pub resumable_upload_buffer_size: usize,
}
impl CommonOptions {
pub fn new() -> Self {
let read_resume_policy = Arc::new(Recommended);
Self {
read_resume_policy,
resumable_upload_threshold: RESUMABLE_UPLOAD_THRESHOLD,
resumable_upload_buffer_size: RESUMABLE_UPLOAD_TARGET_CHUNK,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn defaults() {
let got = CommonOptions::new();
assert_ne!(got.resumable_upload_threshold, 0);
assert_ne!(got.resumable_upload_buffer_size, 0);
assert_eq!(
got.resumable_upload_buffer_size % (256 * 1024),
0,
"{got:?}"
);
}
}