use std::sync::{Arc, atomic::AtomicBool};
use std::thread::JoinHandle;
use crate::{DownloadResult, DownloadSink, RequestBuilder, ResponseError, StartError};
pub(crate) trait Driver {
fn start(
&self,
req: RequestBuilder,
sink: DownloadSink,
cancel: Arc<AtomicBool>,
) -> Result<JoinHandle<Result<DownloadResult, ResponseError>>, StartError>;
}
pub(crate) mod curl;
pub(crate) mod powershell;
pub(crate) mod python3;
pub(crate) mod tunnel;
pub(crate) mod wget;