const DEFAULT_BATCH_SIZE: usize = 1024;
const DEFAULT_MAX_RECORD_BYTES: usize = 8 * 1024 * 1024;
const DEFAULT_MAX_BATCH_BYTES: usize = 64 * 1024 * 1024;
const DEFAULT_MAX_DEPTH: usize = 128;
#[derive(Clone, Debug)]
pub struct ReaderOptions {
pub batch_size: usize,
pub max_record_bytes: usize,
pub max_batch_bytes: usize,
pub max_depth: usize,
pub projection: Option<Vec<usize>>,
}
impl Default for ReaderOptions {
fn default() -> Self {
Self {
batch_size: DEFAULT_BATCH_SIZE,
max_record_bytes: DEFAULT_MAX_RECORD_BYTES,
max_batch_bytes: DEFAULT_MAX_BATCH_BYTES,
max_depth: DEFAULT_MAX_DEPTH,
projection: None,
}
}
}
const DEFAULT_MAX_SAMPLE_RECORDS: usize = 128;
const DEFAULT_MAX_SAMPLE_BYTES: usize = 8 * 1024 * 1024;
#[derive(Clone, Debug)]
pub struct InferenceOptions {
pub max_records: usize,
pub max_bytes: usize,
}
impl Default for InferenceOptions {
fn default() -> Self {
Self {
max_records: DEFAULT_MAX_SAMPLE_RECORDS,
max_bytes: DEFAULT_MAX_SAMPLE_BYTES,
}
}
}
impl ReaderOptions {
pub fn validate(
&self,
schema: &crate::XmlSchema,
record_path: &str,
) -> super::ReaderResult<()> {
super::validation::validate_reader(schema, record_path, self)?;
if let Some(indices) = &self.projection {
schema
.validate_projection(indices)
.map_err(super::ReadError::configuration)?;
}
Ok(())
}
}