use std::path::{Path, PathBuf};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum VdsView {
LastAvailable,
FirstMissing,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum VdsMissingSourcePolicy {
Error,
Fill,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DatasetAccess {
pub(super) virtual_view: VdsView,
pub(super) virtual_prefix: Option<PathBuf>,
pub(super) virtual_missing_source_policy: VdsMissingSourcePolicy,
append_flush: bool,
efile_prefix: Option<PathBuf>,
}
impl Default for DatasetAccess {
fn default() -> Self {
Self {
virtual_view: VdsView::LastAvailable,
virtual_prefix: None,
virtual_missing_source_policy: VdsMissingSourcePolicy::Error,
append_flush: false,
efile_prefix: None,
}
}
}
impl DatasetAccess {
pub fn new() -> Self {
Self::default()
}
pub fn with_virtual_view(mut self, view: VdsView) -> Self {
self.virtual_view = view;
self
}
pub fn set_virtual_view(&mut self, view: VdsView) {
self.virtual_view = view;
}
pub fn with_virtual_prefix<P: Into<PathBuf>>(mut self, prefix: P) -> Self {
self.virtual_prefix = Some(prefix.into());
self
}
pub fn set_virtual_prefix<P: Into<PathBuf>>(&mut self, prefix: Option<P>) {
self.virtual_prefix = prefix.map(Into::into);
}
pub fn with_virtual_missing_source_policy(mut self, policy: VdsMissingSourcePolicy) -> Self {
self.virtual_missing_source_policy = policy;
self
}
pub fn virtual_view(&self) -> VdsView {
self.virtual_view
}
pub fn virtual_prefix(&self) -> Option<&Path> {
self.virtual_prefix.as_deref()
}
pub fn virtual_missing_source_policy(&self) -> VdsMissingSourcePolicy {
self.virtual_missing_source_policy
}
pub fn append_flush(&self) -> bool {
self.append_flush
}
pub fn set_append_flush(&mut self, installed: bool) {
self.append_flush = installed;
}
pub fn efile_prefix(&self) -> Option<&Path> {
self.efile_prefix.as_deref()
}
pub fn set_efile_prefix<P: Into<PathBuf>>(&mut self, prefix: Option<P>) {
self.efile_prefix = prefix.map(Into::into);
}
}